Powershell デバッグ
Powershell Debug
デバック機能一覧
- write-host
- write-debug
- write-verbose
- write-progress
- Set-PSDebug
Break point $host.EnterNestedPrompt()
Write-Warning/Error
write-host
コンソール出力。
write-verbose
$VerbosePreferenceにより挙動を変更可能。挙動設定はWrite-Debugの項目を参照。-Verboseを指定した場合、挙動はContinueとなる。(PS5.0実機確認結果)
write-progress
Debugとは毛並みが異なる。
詳細は下記を参照
Write-Debug
$DebugPreferenceにより挙動を変更可能。-Debug を指定した場合、Inquire となる。PS3.0実機確認結果。
$DebugPreference
DebugPreferenceに指定できる4つの値
- Continue
- SilentlyContinue
- Stop
- Inquire
Set-PSDebug
Set-PSDebug [-Trace 数値] [-Step] [-Strict]
無効にする
Set-PSDebug -off
-Trace 数値
0 無効 1 行 2 式
-Strict
未定義変数の参照により停止
-Step
ステップ実行
Write-Warning/Error
デバッグモードに関わらず表示される。参考まで。
デバック方法
- Write-Verbose : デバック出力したい箇所に挿入。-Verboseオプションで表示される。
- Write-Debug: 止めたい場所に、Write-Debugを追加。-Debugオプションで、問い合わせが出る。
- Set-PSDebug : トレースしたい場合に使用。
デバックモードに入る方法
Write-Debug コードにWrite-Debug を追加し、-Debugオプションを指定する。Write-Debugの箇所で、継続か中断の問い合わせが表示される。但し、[cmdletbinding()] と Param()を対象スクリプトか関数に指定する必要あり。
Set-PSBreakPoint 本コマンドによりブレークポイント設定
PowerShell ISE スクリプト表示画面でブレークポイントを設定する。
(PS5.0?) コンソールでCtrl-Break
(PS5.0?) ISEでCtrl-B
デバックモード時のコマンド
- ステップイン F11 or S
- ステップアウト Shift-F11 or O
- ステップオーバー F10 or V
- 続行 F5 or C
- 停止 Shift-F5 or Q
- 呼び出し履歴表示 Ctrl-Shift-D or K
表示できない自動変数
- $_
- $MyInvocation
- $args
- $Input
- $PSBoundParameters
これらを表示するためには、コードで別の変数に代入しておき、その代入された変数をデバッガで表示する。
ストリーム
下記のストリームが使用されている。
- 0 stdin
- 1 write-output
- 2 write-error
- 3 write-warning
- 4 write-verbose
- 5 write-debug
- 6 write-information
write-xx をリダイレクトするには、 ?>&1 とする。? は上記の1-6。3-5はPS3.0以降、6はPS5.0以降で使用可能。
例) write-verbose
test.ps1 4>&1 > log.txt
上記でtest.ps1 スクリプトのWrite-Verboseをlog.txtファイルにリダイレクトする。
例) Write-Error
test.ps1 2>&1 | tee log.txt
上記で、write-errorを標準出力とlog.txtファイルに出力する。
参考ストリーム
http://stknohg.hatenablog.jp/entry/2015/06/26/001944
参考デバックモード
5.0公式
PowerShell 5.0 https://msdn.microsoft.com/ja-jp/powershell/wmf/5.0/debug_overview