変数が壊れています。この変数が頻繁に設定される(この場合、ネットワークパケットを処理し、パケットごとに1回設定される)ことを除いて、ウォッチポイントが明白な選択です。私は変数がと書かれていると想定されている場所からウォッチポイントを免除したいと思います。基本的に、私が望むのは "line_numberならば変数を見てください!="です。 gdbドキュメントは条件式では少し薄いと思われるので、これが可能かどうかはわかりません...特定の場所でトリガされた場合を除き、gdbウォッチポイント
0
A
答えて
1
次のソースファイルでは、これを行う方法がいくつかあります。 !$ pcは= ...など は以下のとおりとします:
(gdb) break main
(gdb) r
(gdb) watch foo.watched
(gdb) c
Hardware watchpoint 2: foo.watched
Old value = -8320
New value = 0
dont_hit (foo=0x7fffffffde90) at main.c:7
7 for (int i = 0; i < 100; i++)
(gdb) p $pc
$1 = (void (*)()) 0x4004c0 <dont_hit+26>
(gdb) watch -location foo->watched if $pc != 0x4004c0
ardware watchpoint 3: -location foo->watched
(gdb) delete 2
(gdb) c
Continuing.
Hardware watchpoint 3: -location foo->watched
Old value = 99
New value = 1024
hit (foo=0x7fffffffde90) at main.c:15
もう一つの方法は、我々は場所で有効/無効にするためにウォッチポイントをブレークポイントを使用することである私たちは、その後、ウォッチポイントの条件を使用することができます
struct stuff {
int watched;
};
void dont_hit(struct stuff *foo) {
begin:
for (int i = 0; i < 100; i++)
foo->watched = i;
end:
return;
}
void hit(struct stuff *foo) {
foo->watched = 1024;
}
int main()
{
struct stuff foo;
setup:
dont_hit(&foo);
hit(&foo);
dont_hit(&foo);
}
、それが引き金にしたくない私は、わかりやすくするために、ラベルのここでのセットアップ/開始/終了を使用していますが、あなたはメイン置き換えることができます。ファイル名でレーベル:
break main:setup
run
watch -location foo.watched
break dont_hit:begin
commands
silent
disable 2
cont
end
break dont_hit:end
commands
silent
enable 2
cont
end
第三の方法LINE_NUMBER、Pを使用しようとしていますython、およびFinishBreakpointsを使用して、有効化/無効化を行います。
関連する問題
- 1. ウォッチポイント:特定のメソッドからトリガされた場合はブレークしません
- 2. GDBロギングファイルの場所
- 3. 特定の場所
- 4. 特定の場所
- 5. 特定の場所
- 6. gdbまたはlldbにウォッチポイントを設定できません
- 7. GDBでウォッチポイントを設定する
- 8. 特定の場所でSVG内でスケーリングされたSVG
- 9. アップロードされたファイルを特定の場所に保存する
- 10. GDBでウォッチポイントを設定できません
- 11. アプリケーションが開始された場所を特定する
- 12. curlがリダイレクトされた場所の特定
- 13. SQLネストされた場所(合計)
- 14. GoogleマップiOS SDK - 特定の場所の場所を検索
- 15. 指定された場所のGoogleマップルート?
- 16. 可能なタスクが失敗した場合、特定の場所から既存のファイルを削除します。
- 17. UITextFieldで削除の場所を特定するには
- 18. wp_nav_menuが特定のテーマの場所で表示されない
- 19. 特に除外された場合のゼロによるモジュロ
- 20. タイプが定義されている場所を特定する
- 21. Wi Fiでの場所の特定
- 22. 分度器特定の場所でダブルクリック
- 23. カラムの1つが変更された場合のPostgreSQLトリガ
- 24. 指定されたサーバー/インスタンスの場所を特定するSQLエラー
- 25. 写真の場所が特定の場所に到着したときに、写真の場所をリセットするにはどうすればよいですか? ...
- 26. Googleの場所JS APIのローカライズされた場所のタイプ
- 27. ポップアップメッセージを特定の場所に転送
- 28. App Inventor特定の場所を検索
- 29. 特定の場所にタンクを描く
- 30. Angular2の特定の場所にロードされる動的コンポーネント
$ _!= 0x8049831ならばwatch_pktlenを試してみました(アドレスはウォッチポイントがトリップしたときのアドレスです)しばらくしてから実行しました:再帰的内部問題。 中止(コアダンプ) – abatie
$ _ – abatie
の代わりに$ pcを使用した場合と同じ結果gdbの問題点を示しています。再現性のないものを言うのは難しい。とにかくこれは良い答えであり、このテクニックはうまくいきます。 –