您的位置:首页 > 编程语言

CrashRpt开源代码使用详解(一):CrashRpt介绍及简单应用

2017-08-22 17:05 2536 查看
CrashRpt开源代码使用详解(一):CrashRpt介绍及简单应用

 

1、简介

CrashRpt是一个开源的第三方包,在程序出现未处理异常时,能够收集错误信息,并生成程序错误报告。CrashRpt可以将报告按照指定的方式(例如HTTP或SMTP)发送给开发者或者保存在本地,并且可以对生成的错误报告进行分析,定位错误位置,找出错误原因。

2、CrashRpt源码结构

CrashRpt开源代码主要可分为三部分:

(1)CrashRpt:用于拦截程序没有处理的异常,生成MiniDump文件,并和使用该库指定的信息(例如日志文件和屏幕截图等)一起打包成错误报告。

(2)CrashSender:用于将生成的错误报告按照指定方式(HTTP、SMTP或者MAPI)发送或保存。

(3)CrashRptProbe:用于在后台接收并分析错误报告,并以文本的形式输出程序的异常信息。

3、简单应用

下面是CrashRpt简单应用的示例代码:

    // Install crash reporting
    CR_INSTALL_INFO info;
    memset(&info, 0, sizeof(CR_INSTALL_INFO));
    info.cb = sizeof(CR_INSTALL_INFO);            
// Sizeof the structure
    info.pszAppName = _T("APPName");
// App name
    info.pszAppVersion = _T("1.0.0");             
// Appversion
    info.pszErrorReportSaveDir = _T("Crash Report");
    info.pszEmailSubject = _T("Crash Report");
// Email subject
    info.pszUrl = url;
    info.uPriorities[CR_HTTP] = 3;
    info.uPriorities[CR_SMTP] = 2; 
    info.uPriorities[CR_SMAPI] = 1;
    info.dwFlags |=CR_INST_ALL_POSSIBLE_HANDLERS;
    info.dwFlags |= CR_INST_APP_RESTART;
    info.pszRestartCmdLine = _T("/restart");
   
    intnInstResult = crInstall(&info);           
    // Check result
    if(nInstResult!=0)
    {
        TCHAR buff[512];
        crGetLastErrorMsg(buff, 512); // Get last error
        _tprintf(_T("%s\n"),buff);
// and output it to the screen
        return1;
    }
 
   // Crash
   int a= 0;
   int b= 1 / a;
 
  // Uninstall
  #if defined (USE_CRASHRPT)
        crUninstall();
  #endif
        return 0;
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息