2009-08-13 13 views
1

私のプログラムを実行しようとすると、main()関数を入力することはありませんが、ハングするだけです。何とか、私のプログラムは、ntdll.dllへの多数の呼び出しの後、スタック内の最初の呼び出しとしてクラスの1つに例外をスローしています。例外は、私のプログラムが "< bad ptr>"でハングする原因となっているようです。私は設定したブレークポイントをトリガーすることができず、問題の発生場所を見つけることが難しくなります。ntdll.dll実行時にC++プログラムがハングする

+1

詳細情報を追加します。つまり、スタックダンプ時のスタックダンプ、カーネルに呼び出されるAPI呼び出し、クラッシュの周囲のソースです。 –

+0

ntdllポイントは、スレッドがカーネルに移行したときに使用されます。完全なスタックを追加します。 –

答えて

3

クラッシュの原因となったシステムコールを特定する必要があります。通常この種の問題は、いくつかのウィンドウAPIにガベージを渡した結果です。

デバッガを使用して、コールスタックを調べます。あなたのコードの中にある最後のエントリが問題の原因になる可能性があります。おそらくそれは正しく処理されていないいくつかの悪いデータがあります。

1

グローバルオブジェクト/シングルトンを使用しているようです。これらのいずれかがお互いに依存する場合、あなたは困っています。私はあなたのすべてのグローバルを探し、それぞれのコンストラクタにブレークポイントを設定します。あるグローバルが別のグローバルを使用していて、2番目のグローバルがまだ構築されていないというコンストラクタのように思えます。

最後にこれが原因ではなく、アプリケーションがサードパーティ製のDLLを読み込んでいる場合、それらは衝突している可能性があります。私はorbixとmsメッセージキューのDLLを1つに分類すると、他のものより前にロードされたことを思い出します。最終的にこれを見つけるために、私は空のメインが残っているまで、すべてのものを削除してから、問題が見つかるまで1つずつ追加し始めました。

関連する問題