コード内のさまざまな場所で、さまざまなデバッグ セッションから大量のブレークポイントを蓄積することがあります。デバッガーは、ブレークポイントで停止するタイミングを効率的に知るにはどうすればよいでしょうか? 行番号とソース ファイル名を、潜在的に長いブレークポイントのリストと照らし合わせてチェックするために、すべての行で停止することはおそらくありませんね。
これは Eclipse の Java デバッガーですが、質問はどのデバッガーにも当てはまると思います。
コード内のさまざまな場所で、さまざまなデバッグ セッションから大量のブレークポイントを蓄積することがあります。デバッガーは、ブレークポイントで停止するタイミングを効率的に知るにはどうすればよいでしょうか? 行番号とソース ファイル名を、潜在的に長いブレークポイントのリストと照らし合わせてチェックするために、すべての行で停止することはおそらくありませんね。
これは Eclipse の Java デバッガーですが、質問はどのデバッガーにも当てはまると思います。
多くのデバッガー (Eclipse については知りません) で使用される戦略は、本質的にサブルーチン呼び出しまたはシステム呼び出しであるブレークポイントのポイントでコードにパッチを入れることです。ジャンプ先のコードにはブレークポイント情報があり、ユーザー コマンドの出力または受け入れを実行し、パッチで上書きされたコードも含まれているため、コードを実行して、ブレークポイントなしで元のコードと一致するように実行できます。
Nadreckの良い答えに追加するには:
いくつかのよりエキゾチックなもの (x86 での特定のオペコード、ハードウェア ブレークポイント) を含む、より詳細な記事がここにあります。
デバッガーは、ハードウェアまたはソフトウェアにブレークポイントを実装します。後者では、元の命令を保存し、例外を生成する特別なコードを挿入し、例外が発生したときに元の命令を再挿入して、ユーザーにブレークポイントがヒットしたことを知らせる必要があります。ソフトウェア ブレークポイントの詳細については、私の記事をお読みください。
Eclipse デバッガーの内部構造の詳細と、Eclipse デバッガーの作成方法については、以下のリンクを参照してください。