プレーンC(C ++、MFC、.NETなどなし)で記述されたプログラムをWIN32APIにデバッグしています。VS2005(Win 2K / XPで実行するため)とVS2010(Win7で実行するため)の両方でコンパイルする必要があります。顧客がかなり確実に複製できると思われるバグを複製できなかったので、方法を探しています。私のプログラムに「それ自体をデバッグ」させるために。変化しているすべてのキー値を監視していますが、私が本当に見たいのは、値が変化したときのスタックダンプです。ああ、お客様のマシンにコンパイラをインストールせずに(デバッグライブラリを使用して)「真の」デバッグビルドを実行することはできません。これはオプションではないため、これをリリースビルドに組み込む必要があります。
自分のスタックモニターに自分の関数のエントリ/終了呼び出しを追加する以外に、これを行う方法はありますか?特に、特定のメモリアドレスが予期せず変更された場合に、ハードウェアブレークポイントを設定できるようにしたいと思います(したがって、いくつかのEXPECTED変更場所の前後でハードウェアブレークポイントを無効/有効にできる必要があります)。これは可能ですか?Windowsプログラムでは?
可能であれば、数千行のコードを変更する必要のないものをお勧めします。そして、はい、開発ツールに関しては非常に恵まれていません。VisualStudioIDEのプロバージョンを持っていることは幸運だと思います。
--edit--以下に示す優れた回答に加えて、http://www.codereversing.com/blog/ ?p = 76で、独自のコードでハードウェアブレークポイントを使用することに関する情報を見つけました。他のプログラムをハッキングするという考えで書かれたと思いますが、私のニーズに合わせてうまくいくようで、予期しない場所が変数に書き込んだときにミニダンプを作成できます。特に私がそれを一般化することができれば、それはクールで本当に便利でしょう。回答ありがとうございます。今度は、このすべての新しい情報を使用して何を作成できるかを確認します。