web-dev-qa-db-ja.com

ntdll.dllがC ++実行可能ファイルをクラッシュさせるのはなぜですか?

Visual C++実行可能ファイルを機能させるのに問題があり、アプリがクラッシュします。イベントビューアーで見たものを次に示します。

Faulting application name: submit.exe, version: 0.0.0.0, time stamp: 0x50a3cce7
Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58
Exception code: 0xc0000374
Fault offset: 0x000ce653
Faulting process id: 0x8fc
Faulting application start time: 0x01cdc2a3da4f2997
Faulting application path: c:\submit.exe
Faulting module path: C:\Windows\SysWOW64\ntdll.dll
Report Id: 1813823a-2e97-11e2-8675-000c29229191

古いバージョンのVisual Studioでコンパイルされた実行可能ファイルは機能しますが、2008や2010などの新しいVSでコンパイルされた実行可能ファイルでエラーが発生します。アドバイスをお願いします

15
user1789769

この種の問題のトラブルシューティングは、特にコードベースに精通していない場合、真の挑戦になる可能性があります。

Application Verifier をVisual Studioデバッガーと組み合わせて使用​​することを検討してください。

  1. Visual Studioを起動し、アプリケーションをコンパイルします
  2. アプリケーション検証ユーティリティを起動します。
  3. File => Add Application
  4. 適切なTests(たとえば、ヒープ、例外など)を選択します
  5. Visual Studio Debugを使用して、アプリケーションを起動します。

何かbadが発生すると...デバッガが停止します。これにより、問題の原因をかなりよく把握できます。

また、mightは、テストを開始する前に欠落しているシンボルをロードするのに役立ちます。 Visual Studio 2012では、次の方法でこれを行うことができます。Debug => Options and Settings => Debugging => Symbols => Load all symbols

幸運を!

参考文献

更新:2015年7月

完了したら、有効にしたAppVerfierチェックを必ず無効にしてください。 AppVerifierを忘れたとき。

11
Pressacco