PowerShellには、スクリプトのデバッグを行うために、Set-PSDebugというコマンドレットがあります。
書式は大きく2つに分けることができ
Set-PSDebug [-Trace 数値] [-Step] [-Strict]
Set-PSDebug -Off
です。[]がついている箇所は省略可能です。
-Traceパラメータ
-Traceパラメータに指定できる値には下記の3つがあります。
では、前回のスクリプトファイル(Debug.ps1)を使用して実験してみましょう。
$a = 2 $b = 3 $c = $a + $b Write-Debug "Line4: $c" $a = 4 $b = 5 $c = $a + $b Write-Debug "Line8: $c"
-Traceに0を指定した場合
まずはSet-PSDebugコマンドレットによるスクリプトファイルのデバッグ方法ですが
Set-PSDebug -trace 0; ./Debug.ps1
のようにします。
-Traceパラメータに0を指定した場合の実行結果は下記の通りで、値0はトレースが無効となっているために1行だけ表示して終わっています。
デバッグ出力の行には、先頭に「デバッグ:」と表示さ異なる色で表されていることに注意してください。
PS C:\Work> Set-PSDebug -trace 0; ./Debug.ps1 デバッグ: 1+ Set-PSDebug -trace 0; ./Debug.ps1
-Traceに1を指定した場合は行トレースとなりますので、すべての行がデバッグ表示されます。
-Traceに1を指定した場合
PS C:\Work> Set-PSDebug -trace 1; ./Debug.ps1 デバッグ: 1+ Set-PSDebug -trace 1; ./Debug.ps1 デバッグ: 1+ $a = 2 デバッグ: 2+ $b = 3 デバッグ: 3+ $c = $a + $b デバッグ: 4+ Write-Debug "Line4: $c" デバッグ: 5+ $a = 4 デバッグ: 6+ $b = 5 デバッグ: 7+ $c = $a + $b デバッグ: 8+ Write-Debug "Line8: $c"
-Traceに2を指定した場合
-Traceに2を指定した場合は変数の代入、関数呼び出しなど、各行で行われている詳細情報を見ることができます。
PS C:\Work> Set-PSDebug -trace 2; ./Debug.ps1 デバッグ: 1+ Set-PSDebug -trace 2; ./Debug.ps1 デバッグ: ! CALL script 'Debug.ps1' デバッグ: 1+ $a = 2 デバッグ: ! SET $a = '2'. デバッグ: 2+ $b = 3 デバッグ: ! SET $b = '3'. デバッグ: 3+ $c = $a + $b デバッグ: ! SET $c = '5'. デバッグ: 4+ Write-Debug "Line4: $c" デバッグ: 5+ $a = 4 デバッグ: ! SET $a = '4'. デバッグ: 6+ $b = 5 デバッグ: ! SET $b = '5'. デバッグ: 7+ $c = $a + $b デバッグ: ! SET $c = '9'. デバッグ: 8+ Write-Debug "Line8: $c"
上記を見るとわかるように、一番最初に関数呼び出しを行っているので
! CALL script 'Debug.ps1'
と表示されています。
また、変数に値がセットされるときは
SET $a = '2'.
のように表示されていることがわかります。
上記をまとめると
-Traceは、どの行を通って来たかを確認するだけであれば"1"を、詳細情報(変数にセットされた情報、関数呼び出しなど)を得たい場合には"2"を指定すれば良いことがわかります。
うまく使い分けて、デバッグに活用してみてください。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2008, HIRO
E-mail