我的一个C ++ MFC应用程序随机在一些Windows(7,xp)计算机上崩溃。 这个应用程序使用一些第三方库(Apache轴),当我检查与依赖沃克它显示加载与第三方库有关的DLL后退出应用程序。
所以我需要一种方法来检测这个应用程序的崩溃原因是什么。 有没有办法做到这一点?
.pdb
文件与.exe
文件一起宿主识别崩溃问题,但像往常一样,微软没有明确的文件如何使用。 IBM purify
试用版。 但是我没有显示任何有效的信息。 WinDbg
。 但我找不到如何使用它。 任何协助真的很感激。
编辑:崩溃报告添加
Problem Event Name: APPCRASH Application Name: installer.exe Application Version: 5.0.1.0 Application Timestamp: 51ac0bdc Fault Module Name: AxisXMLParserXerces.dll Fault Module Version: 1.0.0.0 Fault Module Timestamp: 51ac0016 Exception Code: c0000005 Exception Offset: 0000161d OS Version: 6.1.7601.2.1.0.256.4 Locale ID: 18441 Additional Information 1: 0a9e Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 Additional Information 3: 0a9e Additional Information 4: 0a9e372d3b4ad19135b953a78882e789`
以下是您可以尝试查找问题来源的几个步骤。
从这里你将不得不根据你的知识和经验与你的应用程序和第三方库。 在预计发生崩溃的地方放置一个断点。 任何时候点击断点看看调用堆栈,看看来电的来源。 问题可能出现在您的代码或第三方库(但可能是您的代码)。
你应该努力重现崩溃。 让用户记录发生事故时他们正在执行的操作。 也有他们包括应用程序或库生成的任何日志。
这将增加您找出问题的机会,但正如我上面所述,您将需要依靠您对应用程序和库的了解。
我建议在开始之前,向应用程序添加一些代码来强制执行崩溃,并自行完成这些步骤,以便熟悉它们。 可能需要一些尝试,然后才能正确完成,您可能需要稍微调整步骤,并根据您的环境和应用程序进行调整。 请记住在将它发送给用户之前删除这个崩溃代码。
因为这似乎是你第一次使用调试器准备一些挫折。 这是正常的。
* 其中一些步骤假定您正在使用Visual Studio。 WinDbg具有不同的界面,但概念是相同的。
** 这些步骤也承担Windows 7. Windows XP显示一个窗口,其中包含应用程序崩溃时不需要重新配置的类似信息。
。 。
。
更改检查解决方案设置
你可以考虑得到一个AQtrace的副本,这是一个工具,旨在处理这个确切的情况。 您也可以考虑使用自动化工具 (例如WinTask)来设置客户端,以捕获他们用来解决问题的步骤。 这大大简化了复制和消除它。
CrashRpt是我们用于MFC应用程序的一个很好的开源工具。 用户可以在发生崩溃后看到CrashSender窗口,然后发送包含可在MS Visual Studio中打开的小型转储文件的崩溃报告。 当然,你需要保留你的二进制文件和相应的.pdb文件,以便在VS中运行崩溃转储时获得正确的调用堆栈。
第三方软件也发生了一些崩溃事件。 我们能够通知客户这种情况。