为什么ntdll.dll会崩溃我的c ++可执行文件?

15 crash process visual-c++ ntdll

我无法使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
Run Code Online (Sandbox Code Playgroud)

在旧版本的Visual Studio中编译的可执行文件工作,但我得到的错误与使用较新的VS编译的可执行文件,如2008年或2010年.请建议

Pre*_*cco 13

解决此类问题可能是一个真正的挑战......特别是当您不熟悉代码库时.

考虑将Application Verifier与Visual Studio调试器结合使用.

  1. 启动Visual Studio并编译您的应用程序
  2. 启动应用程序Verifier实用程序.
  3. File => Add Application
  4. 选择合适的Tests(例如堆,例外......)
  5. 使用Visual Studio Debug启动您的应用程序.

当发生不好的事情时...你的调试器会停止.这应该让你很好地了解问题的根源.

此外,在开始测试之前加载缺失的符号可能会有所帮助.在Visual Studio 2012中,您可以通过以下方式执行此操作: Debug=> Options and Settings=> Debugging=> Symbols=> Load all symbols.

祝好运!

参考

更新:2015年7月

完成后,请务必禁用已启用的AppVerfier检查...否则,当您忘记AppVerifier时,可能会在6个月后遇到一些意外的副作用.

  • 我是Application Verifier的新手。在第一行中,它告诉我“ VERIFIER STOP 00000900:pid 0x136C:堆分配已泄漏。”“ 0BA92FE8:泄漏的分配地址。运行!heap -p -a <address>以获取有关分配的其他信息。这条线在上面。它说“运行”,我在哪里运行此命令?我从来没有弄过这些命令,如果这是一个菜鸟问题,很抱歉。我以为它在命令行中?我从未在其他地方看到过这种命令样式。 (2认同)