Friday, July 18, 2008

Set-PSDebug コマンドレットの-Stepパラメータを使用すると、ステップ実行を行うことができます。

以前にも使用したことのある下記スクリプトで実験してみましょう。

下記スクリプトをメモ帳などで入力してC:\Work\Debug.ps1 に保存します。

$a = 2
$b = 3
$c = $a + $b
Write-Debug "Line4: $c"
$a = 4
$b = 5
$c = $a + $b
Write-Debug "Line8: $c"

以下の一文を入力し[Enter]を押すとステップ実行が開始されます。

PS C:\Work> Set-PSDebug -step; ./Debug.ps1

1行実行されるごとにメッセージが表示されます。

PS C:\Work> Set-PSDebug -step; ./Debug.ps1

この操作を続行しますか?
   1+ Set-PSDebug -step; ./Debug.ps1
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ
(既定値は "Y"):
デバッグ:    1+ Set-PSDebug -step; ./Debug.ps1

「規定は"Y"」と憑依されている箇所がありますが、これは[Enter]キーを押すと次の行が押される、つまり[Y]キーを押すのと同じ操作を行うこと意味します。

とりあえず[Enter]を押していって、下記のような状態になったらいったん止まってください。

PS C:\Work> Set-PSDebug -step; ./Debug.ps1

この操作を続行しますか?
   1+ Set-PSDebug -step; ./Debug.ps1
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ
(既定値は "Y"):
デバッグ:    1+ Set-PSDebug -step; ./Debug.ps1

この操作を続行しますか?
   1+ $a = 2
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ
(既定値は "Y"):
デバッグ:    1+ $a = 2

この操作を続行しますか?
   2+ $b = 3
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ
(既定値は "Y"):

この状態で下記のように「中断」を意味する[S]キーを入力してみましょう。

この操作を続行しますか?
  2+ $b = 3
Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ
既定値は "Y"):S

[S]を入力すると、下記のように PS C:\Work>>> というプロンプトが表示されたと思います。ここで $a[Enter] と入力してみてください。

PS C:\Work>>> $a
2

2という値が表示されたと思います。このように処理を中断して変数の中身を確認することが可能です。

プロンプトを終了するには exit と入力します。

Visual Studio.NETのように現在ステップ実行している行がハイライトされるわけではないので見にくく感じるかもしれませんが、慣れてしまえば非常に有効なデバッグ手段です。

是非ためしてみることをおすすめします。

Friday, July 18, 2008 11:19:28 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: