用 DMP 分析。
window7环境支持么?
@yikoda: Windows 7 当然支持,你有两种方式,一种是在程序 Crash 时自动输出 DMP,另一种方式是当程序 Crash 时,先别关闭程序,从任务管理器中找到你的进程,然后右键选择“创建转储文件”(XP部支持),但是你也可以使用 Debug Diagnostics Tool 工具。
@Launcher: 上面的方法我先写个小程序试试,但是感觉还是实用性不强啊,本地调试还好,程序提交给客户,肯定是编译的release版本,最好是能把函数名都输出到一个文件里,直接让客户把日志反馈回来,可以快速定位。
@yikoda: 我不知道你的实用性不强是什么意思,我们一直在 C++ 程序中使用自动输出 DMP 文件的功能,如果程序在客户机器上 Crash,我们的程序会创建 DMP,我们就可以根据此 DMP 还原现场,迅速定位到 Crash 的位置,并且关联到原文件的代码。
@Launcher: 按您说的,C++程序中可以使用自动输出DMP文件的功能的么?那程序里面要配置什么么?
按我理解的 是操作程序运行的电脑,而不是对程序修改呢··您再给详细的说下吧。。按上面您说的【右键选择“创建转储文件”】方法DMP文件已经生出来了。。就是不知道怎么让程序怎么本身crash时自动生成。
@yikoda: 在 Windows 系统中的程序采用结构化异常(SEH)和向量化异常(VEH)处理机制。对于 SEH 和 VEH,OS 都会使用默认的异常处理器来处理,在你的程序中,你可以使用 SetUnhandledExceptionFilter 来设置自己的异常处理器,然后调用 MiniDumpWriteDump 来创建内存转储文件。