当前位置: 首页 > article >正文

BugTrap:程序崩溃快照、bug跟踪之利器

来源:清泛网  http://www.tsingfun.com/html/2016/debug_0412/1354.html


BugTrap的github官网地址:https://github.com/bchavez/BugTrap

下载源码解压后可直接进行编译,

这里提供一下编译好的dll及lib文件(Unicode版本,如需其他版本请自行下载源码编译)。


效果预览(当程序崩溃时):




点“详情”:


点“预览”:



BugTrap使用方法:
BOOL CMarketInfoApp::InitInstance()
{...SetRegistryKey(_T("应用程序向导生成的本地应用程序"));// 开启程序崩溃感知SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);...
}

逻辑处理MyBugTrap.cpp:
#include "stdafx.h"
#include "BugTrap\BugTrap.h"
#include "MyBugTrap.h"static void SetupExceptionHandler()
{LOG_TRACER();BT_InstallSehFilter();// 配置信息BT_SetAppName(_T("MarketInfo"));BT_SetDialogMessage(BTDM_INTRO1, _T("We're so Sorry, program crashed because of our mistakes !"));BT_SetDialogMessage(BTDM_INTRO2, _T("本程序会尝试收集仅与此次异常崩溃相关的数据,请将此报告发送给我们以便帮助我们开发体验更好的产品,给您造成的不便之处敬请谅解!"));BT_SetSupportEMail(_T("futures_bugreport@tsingfun.com"));// BTF_DETAILEDMODE:崩溃时记录dump文件,不设置的话报告中没有dump文件// BTF_ATTACHREPORT:点”发送到“可以通过带附件的邮件发送报告// BTF_SCREENCAPTURE:错误报告中附带一张崩溃时屏幕截图// BTF_EDITMAIL:点”发送到“可以发送邮件到指定地址(没有附件,不可更改目的地址)// BTF_LISTPROCESSES:列出崩溃时所有的进程信息(速度较慢)// BTF_SHOWADVANCEDUI:崩溃后默认显示详细对话框(不设置的话,先显示简单对话框,有查看详细的按钮)	// BTF_DESCRIBEERROR:发送报告之前弹出问题描述对话框,让用户输入错误描述信息BT_SetFlags(BTF_DETAILEDMODE | BTF_ATTACHREPORT | BTF_SCREENCAPTURE);BT_SetSupportServer(_T("www.tsingfun.com"), 9999);BT_SetSupportURL(_T("http://www.tsingfun.com"));// 最新的Log文件附上TCHAR szLogFile[MAX_PATH] = { 0 };GetCurrentDirectory(MAX_PATH, szLogFile);SYSTEMTIME sys;GetLocalTime(&sys);_stprintf_s(szLogFile, _T("%s\\logs\\%4d%02d%02d.log"), szLogFile, sys.wYear, sys.wMonth, sys.wDay);BT_AddLogFile(szLogFile);//自动保存crash文件//BT_SetReportFilePath(_T("crash"));//BT_SetActivityType(BTA_SAVEREPORT);
}// Windows下感知程序崩溃的方法有3个核心的函数,分别如下:
//	SetUnhandledExceptionFilter   (HandleException)确定出现没有控制的异常发生时调用HandleException.
//	_set_invalid_parameter_handler(HandleInvalidParameter)确定出现无效参数调用发生时调用HandleInvalidParameter.
//	_set_purecall_handler         (HandlePureVirtualCall)确定纯虚函数调用发生时调用HandlePureVirtualCall.// Example: SetUnhandledExceptionFilter(TFUnhandledExceptionFilter); *((int*)0x0) = 0;LONG WINAPI MyUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionPointers)
{LOG_TRACER();SetupExceptionHandler();return EXCEPTION_CONTINUE_EXECUTION;
}
若不想弹出崩溃信息对话框,直接将崩溃包保存文件,只需将上述代码改为:
static void SetupExceptionHandler()
{LOG_TRACER();BT_InstallSehFilter();// 配置信息BT_SetAppName(_T("MarketInfo"));//自动保存crash文件BT_SetReportFilePath(_T("crash"));BT_SetActivityType(BTA_SAVEREPORT);
}

生成崩溃zip包如下(dmp是zip解压出来的):


双击dmp文件,使用vs打开:


进行调试,如下:

这样便可还原崩溃现场,进行跟踪调试快速找出bug。

英文资料请参见:《 Catch All Bugs with BugTrap!


BugTrap服务器端开发配置方法请继续参见清泛网相关博文。

http://www.lryc.cn/news/2413255.html

相关文章:

  • 55英寸液晶拼接屏的长度和宽度尺寸是多少?
  • Java学习笔记--基础内容
  • 电源模块汇总(充电器)
  • cd linux安装到u盘,手把手安装CDLinuxU盘启动
  • js 焦点事件
  • 【Linux学习笔记(十六)】之帮助命令man,info等, 搜索命令find,grep等
  • 博客网址大全
  • JNCIP--组播
  • 使用CoreLocation进行定位(Swift版)
  • 盘点10个一天可以收入100元的副业,让你生活多一份收入
  • nyist 第二次招新赛 I 董学姐与朱学姐的爱恨情仇
  • ubuntu12.04完美安装QQ2012、QQMusic、Foxmail等
  • 回溯算法背包问题(java实现)
  • flash 旋转效果
  • 如何清除木马--104种木马手工清除方法
  • 为什么 John Nash 挨了打
  • 1-思科IOS设备管理
  • 周鸿祎:江湖最后一个大佬
  • ESD与压敏电阻的性能对比
  • 新手入门matlab之线性系统的时域分析
  • android pad刷机,平板刷机图文教程详解!小编手把手教你安卓平板电脑怎么刷机
  • CSS中div布局position以及水平居中
  • 对Carrier IQ木马的综合分析报告
  • 【乡巴佬】四步打造属于自己的WindwosXP系统个性鼠标
  • 史上最全的arduino实验集锦
  • MOTO 国行ME525升级Android2.3.4教程
  • vs2005操作水晶报表(入门示例)
  • 属兔的人今日运势-360星座网_【生肖运势】12月22日十二生肖运势解析
  • miui12 android版本,miui12基于安卓几版本开发的?miui12是安卓11吗
  • R语言均匀分布函数uniform Distribution(dunif, punif, qunif runif)实战