ページ 11

指定のアドレスの数値変更を検出したい

Posted: 2014年2月25日(火) 16:41
by joh2121
C++というより、統合開発ツールの質問になります。
現在、visual C++ 2010 EXPRESS で作業をしており、
とあるメモリ領域が不正に書き換えられるバグの原因を突き止めようとしています。

もしも、デバッガに
「特定のアドレスを監視し、それを書き換える命令があった瞬間にブレークする」
といった機能があれば、ほぼ一瞬で解決するのではと思っていますが、検索してもそれらしい情報はありません。
もしあれば非常に便利、つまり恐らく既に実装してある機能なのではと考えていますが……

もしもそれらしい情報をご存知の方がいらっしゃれば、ご教示願います。
よろしくお願いします。


※具体的には、以下の様なことを想定しています。

コード:


int* p = new int; // ここで、例えば p に 0x12345678 が代入されたとする
printf( "p = %d", p ); // ここにブレークポイントを設置し、一旦離脱。その後、監視アドレスに0x12345678を指定

/* ……色々あって、別のどこか…… */

/* 0x12345678 <= 何か と動作する命令*/  // ここで、自動的にブレークしてくれるとよい

なお、過去に別の掲示板にも一度書き込んだことのある内容です。
マルチポストとして問題があれば、質問を速やかに削除しますので、ご指摘いただけると有難いです

Re: 指定のアドレスの数値変更を検出したい

Posted: 2014年2月25日(火) 16:53
by softya(ソフト屋)
別の掲示板と可能なら相互リンクして下さい。
出来なくても、こちらからのリンクをお願いします。

さてご質問の件ですが、メニューのデバッグにブレークポイントの作成が有ると思います。
このメニューの中に新しいデータブレークポイントの作成が有ると思いますが、これがお望みの機能です。
で、これを動作させるにはデバッグで起動してブレークさせたあとに設定する必要があります。

Re: 指定のアドレスの数値変更を検出したい

Posted: 2014年2月25日(火) 17:06
by joh2121
ご教示いただき、ありがとうございました。
無事、件のバグを修正することが出来ました。

また、相互リンクの件、承知いたしました。以後同じケースがあればそのように致します。
今回の質問は、以下の掲示板で行いました。

【Visual C++ Q & A掲示板】
http://hpcgi1.nifty.com/MADIA/Vcbbs/www ... 020003.txt
でのものになります(拡張子が.txtですが、.cgi で実行されるので掲示板形式となっています)