2

这是一个非常开放的问题,我真的只是在寻找如何定位问题。

该应用程序运行一天左右,然后在使用时会崩溃。应用程序中崩溃的点每次都不相同。应用程序正在使用的内存没有增加。

C++ 不是我的标准开发语言,因此任何指针都将不胜感激。

下面详细介绍了我给出的运行时错误。用谷歌搜索后,我可以看到这40000015是一个通用的,我不知道发生了什么样式错误。无论如何我可以使用附加信息 (1-4) 来帮助定位问题吗?

任何帮助深表感谢!

谢谢

Problem signature:
Problem Event Name:         APPCRASH
Application Name:           Main.exe
Application Version:        1.1.10.0
Application Timestamp:      5278d640
Fault Module Name:          MSVCR90.dll
Fault Module Version:       9.0.30729.4940
Fault Module Timestamp:     4ca2ef57
Exception Code:             40000015
Exception Offset:           0005beae
OS Version:                 6.1.7601.2.1.0.256.48
Locale ID:                  2057
Additional Information 1:   3793
Additional Information 2:   379382cf89267e4a4b730ab2a7cc6828
Additional Information 3:   f05b
Additional Information 4:   f05b042c097ccdb870355bd0f539be8d

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
4

1 回答 1

1

我会先在调试器下运行它,然后让它运行一天。请记住启用所有异常捕获 - 在我的 VS 2005 中,它在 Debug->Exceptions 中,为 40000015 异常添加处理程序。

如果你不能在调试器下运行它,即。它仅在客户端 PC 上发生(您仍然可以使用远程调试),然后您可以使用 AddVectoredExceptionHandler 实现异常处理程序,然后使用 StackWalk64 记录调用堆栈。如果你可以用符号编译,那么这样的堆栈将包含异常源的完整路径。它将位于 MSVCR90.dll 中,但可能源自代码中的某个位置。如果您不能包含符号,那么您始终可以将 .map 文件或 windbg 与本地存储的 .pdb 文件一起使用。当然,这是很多工作,尤其是如果 C++ 不是您的主要语言,那么第一个建议对您来说是最好的。

好的,你也可以使用 MiniDumpWriteDump,然后使用 windbg 代替 StackWalk64。

于 2014-04-03T09:16:05.130 回答