ブレークポイントを使用する
ブレークポイントとは、プログラムの動作状態を確認するために、強制的に停止したい位置を設定する場所のことです。
ブレークポイントの設定は簡単で$host.EnterNestedPrompt()
をブレークポイントをかけたい場所に記述するだけです。
Debug.ps1を下記のように改善してスクリプトにブレークポイントを設定し、実験してみたいと思います(5行目に挿入しました。スクリプトは「C:\Work\Debug.ps1」として上書き保存します)。)
$a = 2 $b = 3 $c = $a + $b $host.EnterNestedPrompt() #ブレークポイントの設定 Write-Debug "Line4: $c" $a = 4 $b = 5 $c = $a + $b Write-Debug "Line8: $c"
上記を実行してみます。
PS C:\Work> ./Debug.ps1 デバッグ: Line4: 5 PS C:\Work>>>
上記のように、ブレークポイントを設定した位置までコードが実行されプロンプトが表示されます。
この状態は、「ステップ実行する」で説明した「中断処理」と同様で、変数の状態を確認することが可能です。試しに$a
、$b
、$c
がどうなっているかみてみましょう。
PS C:\Work> ./Debug.ps1 デバッグ: Line4: 5 PS C:\Work>>> $a 2 PS C:\Work>>> $b 3 PS C:\Work>>> $c 5 PS C:\Work>>>
このようにブレークポイントを設定すると、ブレークポイントが設定された場所まで一気にコードが実行され、その時点での変数の値を確認することができます。プロンプトを終了するには exitと入力して[Enter]キーを押します。
PS C:\Work>>> exit デバッグ: Line8: 9 PS C:\Work>
まとめ
今回は、PowerShellでのスクリプト開発におけるデバッグ機能について説明しました。
PowerShell自体にはVB.NETやC#のようにグラフィカルなデバッグ環境を持ち備えていません。しかし、今回紹介したデバッグ機能を用いることで、1行ずつステップ実行したり、変数の途中経過をウォッチすることが可能となります。
ぜひ、このデバッグ機能を有効に活用して、効率のよい開発を行っていただければ幸いです。