2012-07-20 184 views
5

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

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

EDIT:

は、問題を調査するために引き続き、アイブ氏は、まっすぐなプログラムの終了とは対照的に、私は時々、スタックトレースと例外を得ることができることを発見しました。トレースは私をベクトル割り当て(プッシュ)に持ち込みます。プログラムがちょうど終了するシナリオでは、これはまだ実行されている最後の行です。私はどこかで壊れたメモリを持っていると思っていますが、通常これがプログラムダンプであり、例外ではないことが私を正しい方向に向けるのを助けることができるということを期待していました。

+0

そこにexit()文があるか、または私が見ているこれらの両方が、指示された振る舞いを引き起こすと思われるからです。 – rerun

+5

終了コードは、HRESULT ==> 0x80000003 – jglouie

+0

と解釈される方がいいかもしれません。デーラーからスローして何かをするかもしれません。 – jimmyjambles

答えて

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

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

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

+0

ありがとう、私はWindows XPのVMにVisual Studioをインストールするまで行った。デバッガを使ってローカルで再コンパイルして実行しましたが、まだ終了しています。最後に呼び出される行は、割り当てです。 – jimmyjambles

+0

私は分かりませんが、それはXPの典型的な動作ではありません。もちろん、ヒープの破損のような音。 Debug + Exceptionsをクリックし、Throwしたボックスにチェックを入れます。 –

+1

は、上の配列の境界を越えてバイトにアクセスしていましたが、何がスローされたのかが分かりませんでした。再度、感謝します – jimmyjambles

関連する問題