[解決済み】GDBで「メモリアクセス」にブレークポイントを設定することはできますか?
2022-04-18 01:02:12
質問
gdbでアプリケーションを実行していますが、特定の変数がアクセス/変更されるたびにブレークポイントを設定したいのです。これを行うための良い方法はありますか?また、C/C++で変数がいつ変更されるかを監視する他の方法にも興味があります。
どのように解決するのですか?
時計 は書き込み時のみブレークします。 rwatch は読み込み時にブレークさせ、そして アウォッチ 読み書きの際にブレークさせることができます。
メモリロケーションに読み取り用のウォッチポイントを設定できます。
gdb$ rwatch *0xfeedface
Hardware read watchpoint 2: *0xfeedface
しかし、rwatch と awatch コマンドには、一つの制限があります。 を式で表すことができます。
gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.
だから、自分で拡張する必要があるのです。
gdb$ print $ebx
$13 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
gdb$ c
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
Value = 0xec34daf
0x9527d6e7 in objc_msgSend ()
編集する あ、ちなみに。どちらかのハードウェアが必要です またはソフトウェアサポート . ソフトウェアの方が明らかに遅いです。お使いのOSがハードウェアウォッチポイントをサポートしているかどうかを調べるには、以下のサイトを参照してください。 can-use-hw-watchpoints 環境設定
gdb$ show can-use-hw-watchpoints
Debugger's willingness to use watchpoint hardware is 1.
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] ChromeでコードからJavaScriptのブレークポイントを設定する方法は?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み】システムが指定されたファイルを見つけられませんでした。