9

VisualStudioを使用してWPF/CLR/アンマネージネイティブc++プロジェクトの混合をデバッグしているときに、興味深い(かなり厄介な)エラーが発生しました。このエラーはWindowsXPでのみ発生します。プログラム内でメモリの破損が発生しているようですが、その範囲が大きすぎてここに投稿できません。私が抱えている問題は、プログラムでクラッシュが発生すると、VSデバッガーが例外を見つけようとせずに終了することです。これは、何もスローされないためだと思います。プログラムの終了コードは、実際に私が続けなければならない唯一の情報であり、その最小のint値です。

誰かがこれに遭遇し、それが意味する限り正しい方向に私を向けることができるかもしれませんか?

編集:

問題の調査を続けると、プログラムが直接終了するのではなく、スタックトレースと例外が発生することがあることがわかりました。トレースは、ベクトル割り当て(プッシュ)に私をもたらします。プログラムが終了したばかりのシナリオでは、これが最後に実行された行です。私はどこかに破損したメモリがあると思いますが、これが通常はプログラムダンプとして現れ、例外ではないという事実が私を正しい方向に向けるのに役立つことを期待していました。

4

1 に答える 1

10
//
// MessageId: STATUS_BREAKPOINT
//
// MessageText:
//
// {EXCEPTION}
// Breakpoint
// A breakpoint has been reached.
//
#define STATUS_BREAKPOINT                ((NTSTATUS)0x80000003L)

プログラムは INT3 命令に到達し、ブレークポイントをトリガーしました。しかし、デバッガーが存在しないため、プログラムが終了します。コードに残したままの __debugbreak() である可能性があり、プログラムの状態が破損したときにワイルドジャンプによってトリガーされる可能性があります。

デバッグする必要があります。開発マシンで簡単に再現できない場合は、失敗したマシンからのミニダンプが必要になります。

于 2012-07-21T17:31:29.707 に答える