ブレークポイントは、オペレーティング システムが実行を停止してデバッガーに中断する実行可能コード内の場所です。 これにより、ターゲットを分析し、デバッガー コマンドを発行できます。
ブレークポイントの場所は、仮想アドレス、モジュールとルーチンのオフセット、またはソース ファイルと行番号 (ソース モードの場合) で指定できます。 オフセットなしでルーチンにブレークポイントを設定すると、そのルーチンが入力されたときにブレークポイントがアクティブになります。
ブレークポイントには、いくつかの追加の種類があります。
ブレークポイントは、特定のスレッドに関連付けることができます。
ブレークポイントは、トリガーされる前に、アドレスを通過する一定の数のパスを有効にすることができます。
ブレークポイントは、トリガーされたときに特定のコマンドを自動的に発行できます。
実行可能でないメモリにブレークポイントを設定し、その場所の読み取りまたは書き込みを監視できます。
ユーザー モードで複数のプロセスをデバッグする場合、ブレークポイントのコレクションは現在のプロセスによって異なります。 プロセスのブレークポイントを表示または変更するには、現在のプロセスとしてプロセスを選択する必要があります。 現在のプロセスの詳細については、「プロセス とスレッドの制御」を参照してください。
ブレークポイントを制御および表示するためのデバッガー コマンド
ブレークポイントを制御または表示するには、次のメソッドを使用できます。
bl (ブレークポイント リスト) コマンドを使用して、既存のブレークポイントとその現在の状態を一覧表示します。
.bpcmds (ブレークポイント コマンドの表示) コマンドを使用して、ブレークポイントの作成に使用したコマンドと共にすべてのブレークポイントを一覧表示します。
bp (ブレークポイントの設定) コマンドを使用して、新しいブレークポイントを設定します。
新しいブレークポイントを設定するには、 bu (未解決のブレークポイント の設定) コマンドを使用します。 bu で設定されたブレークポイントは、未解決のブレークポイントと呼ばれます。bp で設定されるブレークポイントとは異なる特性を持ちます。 詳細については、「 未解決のブレークポイント (bu ブレークポイント)」を参照してください。
bm (シンボル ブレークポイントの設定) コマンドを使用して、指定したパターンに一致するシンボルに新しいブレークポイントを設定します。 /d スイッチが含まれている場合、bm で設定されたブレークポイントはアドレス (bp ブレークポイントなど) に関連付けられます。このスイッチが含まれていない場合は、(bu ブレークポイントのように) 未解決になります。
ba (アクセス時の中断) コマンドを使用して、データ ブレークポイントとも呼ばれるプロセッサ ブレークポイントを設定します。 これらのブレークポイントは、メモリ位置の書き込み先、読み取り時、コードとして実行されたとき、またはカーネル I/O が発生したときにトリガーできます。 詳細については、「 プロセッサ ブレークポイント (ba ブレークポイント)」を参照してください。
bc (ブレークポイントクリア) コマンドを使用して、1 つ以上のブレークポイントを完全に削除します。
bd (ブレークポイントの無効化) コマンドを使用して、1 つ以上のブレークポイントを一時的に無効にします。
be (ブレークポイントの有効化) コマンドを使用して、無効になっている 1 つ以上のブレークポイントを再度有効にします。
br (ブレークポイント番号の変更) コマンドを使用して、既存のブレークポイントの ID を変更します。
bs (ブレークポイントの更新コマンド) コマンドを使用して、既存のブレークポイントに関連付けられているコマンドを変更します。
bsc (条件付きブレークポイントの更新) コマンドを使用して、既存の条件付きブレークポイントが発生する条件を変更します。
WinDbg には、ブレークポイントの制御と表示を容易にするユーザー インターフェイス要素がいくつかあります。 WinDbg (クラシック) でのブレークポイントの設定を参照してください。
各ブレークポイントには、ブレークポイント ID と呼ばれる 10 進数が関連付けられています。 この数値は、さまざまなコマンドのブレークポイントを識別します。
ブレークポイント コマンド
ブレークポイントにヒットしたときに自動的に実行されるコマンドをブレークポイントに含めることができます。 たとえば、次のコマンドは MyFunction+ 0x47 で中断し、ダンプ ファイルを書き込んでから実行を再開します。
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
手記 カーネル デバッガーからユーザー モード デバッガーを制御する場合は、ブレークポイント のコマンド文字列で g (Go) を使用しないでください。 シリアル インターフェイスは、このコマンドに追いつくことができない可能性があり、CDB に戻すことができなくなります。 この状況の詳細については、「 カーネル デバッガーからの User-Mode デバッガーの制御」を参照してください。
ブレークポイントの数
カーネル モードでは、最大 32 個のソフトウェア ブレークポイントを使用できます。 ユーザー モードでは、任意の数のソフトウェア ブレークポイントを使用できます。
サポートされているプロセッサ ブレークポイントの数は、ターゲット プロセッサ アーキテクチャによって異なります。
条件付きブレークポイント
特定の条件下でのみトリガーされるブレークポイントを設定できます。 これらの種類のブレークポイントの詳細については、「 条件付きブレークポイントの設定」を参照してください。
あいまいなブレークポイント
バージョン 10.0.25310.1001 以降のデバッガー エンジンでは、あいまいなブレークポイントの解決がサポートされるようになりました。 あいまいなブレークポイントにより、ブレークポイント式が複数の場所に解決される特定のシナリオで、デバッガーがブレークポイントを設定できます。 詳細については、「あいまいなブレークポイントの解決」を参照してください。
こちらも参照ください
ブレークポイントの使用