GDB ハードウェア ウォッチポイントの設定/ソフトウェア ウォッチポイントの設定方法 質問する

GDB ハードウェア ウォッチポイントの設定/ソフトウェア ウォッチポイントの設定方法 質問する

以前の質問x86 では監視対象のオブジェクトのサイズがデバッグ レジスタによって制限されることを説明しました。予想どおり、double 変数を「監視」できます。ただし、たとえば double データ メンバーは監視できません。

watch pObject->dPrice

生産する

Hardware watchpoint 1: pObject->dPrice

しかし、実行を継続しようとすると、

ハードウェア ブレークポイントを挿入できませんでした: 要求したハードウェア ブレークポイント/ウォッチポイントが多すぎる可能性があります。

これはのみブレークポイント/ウォッチポイント。

なぜそうなるのか興味がありますが、もっと重要なのは、これを回避する方法があるかどうかです。GDB のドキュメントによると、ハードウェアを使用できない場合はソフトウェア ウォッチポイントが使用される可能性があります。この場合、ソフトウェア ウォッチポイントの使用は試みられませんが、強制的に使用させる方法はあるのでしょうか。

ベストアンサー1

はい、可能です:

使用できるハードウェアウォッチポイントを 0 に設定する

から5.1.2 ウォッチポイントの設定:

set can-use-hw-watchpoints 0 コマンドを使用すると、GDB がソフトウェア ウォッチポイントのみを使用するように強制できます。この変数をゼロに設定すると、基盤となるシステムがハードウェア ウォッチポイントをサポートしている場合でも、GDB はハードウェア ウォッチポイントの使用を試みません。(can-use-hw-watchpoints をゼロに設定する前に設定されたハードウェア支援ウォッチポイントは、式の値を監視するハードウェア メカニズムを引き続き使用することに注意してください。)

set can-use-hw-watchpoints

    ハードウェア ウォッチポイントを使用するかどうかを設定します。

show can-use-hw-watchpoints

    ハードウェア ウォッチポイントの現在の使用モードを表示します。

おすすめ記事