windows下C++程序release版本崩溃错误排查方法。
一个你精心设计的24小时不间断运行,多线程的程序,突然运行了几个月后崩了,此问题是非常难以排查的,也是很头疼的问题。
现利用Google开源工具crashrpt与Microsoft windbg工具,解决这个问题,并分享给大家。
使用工具Crashrpt、Windbg.因为windbg这个工具很常见,暂不介绍。其中重点介绍一下crashrpt。
一、crashrpt 简介
crashrpt是一个包含能够在程序出现各种类型未处理异常时生成程序错误报告,然后将该报告按照指定的方式(例如HTTP或者SMTP)发送给开发者,最后分析这些信息的工具。
crashrpt由3个部分组成:
(1)错误报告生成库CrashRpt
我们需要在自己的程序中使用该库捕获我们的程序没有处理的异常,在该库捕获到这些未处理的异常后,CrashRpt会生成MiniDump文件,
并将和你使用该库指定的信息(例如日志文件和屏幕截图等)一起打包成错误报告。
CrashRpt库支持处理我所知道的所有Windows C/C++程序抛出的各类异常,还能捕获C++异常、信号和调用各类CRT库中的函数出现的错误。
(2)异常信息发送工具CrashSender
该工具能够按照我们使用CrashRpt设置的方式,将生成的错误报告按照我们指定的方式(HTTP、SMTP或者MAPI)发送给我们。
(3)自动异常信息处理工具crprober
该工具能够在后台接收CrashSender发送给我们的错误报告,通过分析错误报告后以文本的形式输出程序的异常信息。
二、下载安装 crashrpt
(1)下载crashrpt
crashrpt下载地址:https://code.google.com/p/crashrpt
关于crashrpt更详细的介绍,可以参考面https://code.google.com/p/crashrpt/ (大陆可能很难访问到)以及http://crashrpt.sourceforge.net/docs/html/getting_started.html (大陆可能很难访问到)
下载解压后的目录如下图所示:其中bin目录中包含使用vc10编译出来的所有crashrpt相关库和程序,include和lib目录中包含了开发所需要的头文件以及lib文件。
(2)使用vc编译crashrpt
如果你不介意程序在发布时带上vc10的运行库,或者你的程序就是用vc10开发的,你可以直接使用这些编译好的二进制文件。
如果你想crashrpt和你的程序依赖相同的vc运行库,那么你需要使用你的vc重新编译crashrpt。
对于使用除vc10之外的其它vc版本的朋友,如果要编译crashrpt,则需要使用开源交叉编译工具cmake,我们需要使用cmake生成和你vc版本相同的解决方案以及工程文件。
{
附cmake安装使用方法:首先在http:/