Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

PowerShell 2.0の新機能(7)
――デバッグ編

PowerShell 2.0のデバッグ関連コマンドレット

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/05/11 14:00

 PowerShell 2.0ではデバッグ関連のコマンドレットが追加されました。PowerShell ISEを使用してデバッグを行うことも可能ですが、コマンドレットを使用するとより細やかなデバッグを行うことができます。今回はコマンドレットを使用したデバッグ方法について説明します。

目次

はじめに

 今回はPowerShell 2.0で追加されたデバッグ用コマンドレットの使用方法について説明します。

対象読者

 PowerShellの基本的な操作ができる方を対象とします。PowerShellについて学びたい方は、PowerShell入門の連載を参照してください。

デバッグ用コマンドレット

 PowerShell 2.0で追加されたデバッグ用のコマンドレットは表1の通りです。

表1 デバッグ用コマンドレット
コマンドレット 説明
Set-PSBreakpoint 行、変数、コマンドにブレークポイントを設定する
Get-PSBreakpoint 現在のセッションのブレークポイントを取得する
Disable-PSBreakpoint 現在のセッションのブレークポイントを無効にする
Enable-PSBreakpoint 現在のセッションのブレークポイントを再び有効にする
Remove-PSBreakpoint 現在のセッションからブレークポイントを削除する
Get-PSCallStack 現在のコール スタックを表示する

デバッグの開始/終了

 デバッグを開始するにはスクリプトにブレークポイントを設定しておく必要があります。ブレークポイントが設定された状態でスクリプトを実行するとデバッグが行えます。

 デバッグを終了するには、スクリプトを最後まで実行するか、qと入力します(詳細については後述します)。

Set-PSBreakpoint

 スクリプトにブレークポイントを設定するには、Set-PSBreakpointコマンドレットを使用します。

 ブレークポイントは次の3か所に設定できます。

  1. 特定の行
  2. コマンド、関数
  3. 変数

 それぞれについて例を紹介します。

特定の行にブレークポイントを設定する

 特定の行にブレークポイントを設定する構文は次の通りです。

構文:特定の行にブレークポイントを設定する
Set-PSBreakpoint -Script スクリプトファイル -Line 行番号

 例えばExample.ps1というスクリプトファイルの7行目にブレークポイントを設定する場合は次のように記述します。

Example.ps1の7行目にブレークポイントを設定する
Set-PSBreakpoint -Script Examle.ps1 -Line 7

コマンドや関数にブレークポイントを設定する

 コマンドや関数にブレークポイントを設定すると、設定したコマンドや関数が実行される直前で実行を停止できます。

 構文は次の通りです。

構文:コマンドや関数にブレークポイントを設定する
Set-PSBreakpoint -Script スクリプトファイル -Command コマンドまたは関数

 例えばExample.ps1内にあるFunc1というコマンドにブレークポイントを設定する場合は次のように記述します。

Example.ps1内のFunc1というコマンドにブレークポイントを設定する
Set-PSBreakpoint -Script Examle.ps1 -Command Func1

変数にブレークポイントを設定する

 変数にブレークポイントを設定した場合は、変数が読み取られるとき、変数に新しい値が書き込まれるとき、またはその両方の時にスクリプトを停止することができます。

 構文は次の通りです。

構文:変数にブレークポイントを設定する
Set-PSBreakpoint -Script スクリプトファイル -Variable 変数 -Mode モード

 変数はドル記号($)を外して指定します。また-Modeパラメーターには表2に示す値を指定することができます。省略した場合は規定値としてWriteが設定されます。

表2 -Modeパラメーター
説明
Write(既定値) 変数の値が書き換わる前に停止する
Read 変数の値が読み取られるときに停止する
ReadWrite 上記の両方で停止する

 例えばExample.ps1内にある変数$valにReadWriteを設定する場合は次のように記述します。

変数にReadWriteモードを設定する
Set-PSBreakpoint -Script Func1.ps1 -Variable val -Mode ReadWrite

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • HIRO(ヒロ)

    HIRO's.NETのHIROです。 とある半導体工場のSEです。 VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。 最近はBlog でPowerShellについて書いています。 2008/07/07にPowerShell from Japan!!という...

バックナンバー

連載:PowerShell 2.0の新機能
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5