はじめに
今回はPowerShell 2.0で追加されたデバッグ用コマンドレットの使用方法について説明します。
対象読者
PowerShellの基本的な操作ができる方を対象とします。PowerShellについて学びたい方は、PowerShell入門の連載を参照してください。
デバッグ用コマンドレット
PowerShell 2.0で追加されたデバッグ用のコマンドレットは表1の通りです。
コマンドレット | 説明 |
Set-PSBreakpoint | 行、変数、コマンドにブレークポイントを設定する |
Get-PSBreakpoint | 現在のセッションのブレークポイントを取得する |
Disable-PSBreakpoint | 現在のセッションのブレークポイントを無効にする |
Enable-PSBreakpoint | 現在のセッションのブレークポイントを再び有効にする |
Remove-PSBreakpoint | 現在のセッションからブレークポイントを削除する |
Get-PSCallStack | 現在のコール スタックを表示する |
デバッグの開始/終了
デバッグを開始するにはスクリプトにブレークポイントを設定しておく必要があります。ブレークポイントが設定された状態でスクリプトを実行するとデバッグが行えます。
デバッグを終了するには、スクリプトを最後まで実行するか、qと入力します(詳細については後述します)。
Set-PSBreakpoint
スクリプトにブレークポイントを設定するには、Set-PSBreakpointコマンドレットを使用します。
ブレークポイントは次の3か所に設定できます。
- 特定の行
- コマンド、関数
- 変数
それぞれについて例を紹介します。
特定の行にブレークポイントを設定する
特定の行にブレークポイントを設定する構文は次の通りです。
Set-PSBreakpoint -Script スクリプトファイル -Line 行番号
例えばExample.ps1というスクリプトファイルの7行目にブレークポイントを設定する場合は次のように記述します。
Set-PSBreakpoint -Script Examle.ps1 -Line 7
コマンドや関数にブレークポイントを設定する
コマンドや関数にブレークポイントを設定すると、設定したコマンドや関数が実行される直前で実行を停止できます。
構文は次の通りです。
Set-PSBreakpoint -Script スクリプトファイル -Command コマンドまたは関数
例えばExample.ps1内にあるFunc1というコマンドにブレークポイントを設定する場合は次のように記述します。
Set-PSBreakpoint -Script Examle.ps1 -Command Func1
変数にブレークポイントを設定する
変数にブレークポイントを設定した場合は、変数が読み取られるとき、変数に新しい値が書き込まれるとき、またはその両方の時にスクリプトを停止することができます。
構文は次の通りです。
Set-PSBreakpoint -Script スクリプトファイル -Variable 変数 -Mode モード
変数はドル記号($)を外して指定します。また-Modeパラメーターには表2に示す値を指定することができます。省略した場合は規定値としてWriteが設定されます。
値 | 説明 |
Write(既定値) | 変数の値が書き換わる前に停止する |
Read | 変数の値が読み取られるときに停止する |
ReadWrite | 上記の両方で停止する |
例えばExample.ps1内にある変数$valにReadWriteを設定する場合は次のように記述します。
Set-PSBreakpoint -Script Func1.ps1 -Variable val -Mode ReadWrite