6

GDB ウォッチポイントはどのように機能しますか? 定義された場所でバイトレベルのアクセスを利用するために、同様の機能を実装できますか?

4

2 に答える 2

13

x86 には、メモリ アドレスを追跡する CPU デバッグ レジスタ D0 ~ D3 があります。

これは、ハードウェア ブレークポイントが Linux でどのように実装されているかを説明し、どのプロセッサ固有の機能が使用されているかの詳細も示しています。

ハードウェア ブレークポイントに関する別の記事。

于 2013-10-01T06:09:27.067 に答える
6

gdbはMMUを使用して、監視されたアドレス範囲を含むメモリページが保護されているとマークされると思います-保護されたページへの書き込みで例外が発生すると、gdbは例外を処理し、書き込みのアドレスが特定のアドレスに対応するかどうかを確認しますウォッチポイントを選択し、それに応じて再開するか、gdbコマンドプロンプトにドロップします。

mprotectを使用して、独自のデバッグコードまたはテストハーネスに類似したものを実装できますが、不正な書き込みで失敗するよりも高度な処理を行う場合は、例外ハンドラーを実装する必要があります。

于 2011-10-18T10:30:55.930 に答える