ブレークポイントは、GDBなどの最も一般的なデバッガーでサポートされている最もクールな機能の1つです。しかし、ブレークポイントはどのように機能しますか?コンパイラーはブレークポイントを達成するためにどのようなコード変更を行いますか?ブレークポイントをサポートするために使用される特別なハードウェア機能はありますか?
コンパイラは、ブレークポイントをサポートするためにバイナリを「変更」する必要はありません。ただし、次のことが重要です。
その後、残りの作業はデバッガ自体によって実行されます。
最初にブレークポイントを設定するには、バイナリに特別な情報を追加する必要があります.cソースファイルをコンパイルするときにフラグ-gを使用して、この情報を含めます。ソフトウェアデバッガーは実際にこの情報を使用してブレークポイントを設定します。私が経験したように、ハードウェアブレークポイントのサポートはVxWorksにあります。基本的に、ブレークポイントでプロセッサは停止します。したがって、内部的には、プロセッサに例外を与えるステップを使用して、ソフトウェアブレークポイントを配置できます。一方、ハードウェアブレークポイントは、ハードウェアレジスタに格納されたアドレスを照合して例外を発生させます。ハードウェアブレークポイントは非常に強力ですが、アーキテクチャに大きく依存します。
非常に良い説明はこちら ハードウェアブレークポイントとソフトウェアブレークポイントの違いは何ですか? プロセッサに関連する情報の良い紹介がここにあります http://processors.wiki.ti.com/index .php/How_Do_Breakpoints_Work