BugTrap:程序崩溃快照、bug跟踪之利器
来源:互联网 发布:乌克丽丽有什么软件 编辑:程序博客网 时间:2024/06/06 15:39
来源:清泛网 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服务器端开发配置方法请继续参见清泛网相关博文。
0 0
- BugTrap:程序崩溃快照、bug跟踪之利器
- linux跟踪利器之Ftrace
- QTabWidget bug导致程序崩溃
- 跟踪bug
- IOS之程序崩溃解决
- iOS之程序崩溃解决
- Android之程序崩溃后重启
- R语言调用C++出现bug,R程序直接崩溃
- Xcode 崩溃调试跟踪
- Cocos2dx崩溃日志跟踪
- 《windows 程序调试》读书笔记之跟踪篇
- linux之使用ptrace 跟踪多线程程序
- Qt程序崩溃之自定义类型
- iOS之NSMutableDictionary导致程序崩溃:'NSInternalInconsistencyException'
- Bug跟踪管理
- Bug跟踪管理
- 使用Mantis跟踪bug
- bug跟踪系统
- C++ string类:find()和find_first_of()
- Windows 驱动开发资源链接
- iOS _查询所剩内存和所剩存储空间的方法
- Git使用教程
- 107. Binary Tree Level Order Traversal II
- BugTrap:程序崩溃快照、bug跟踪之利器
- x264 FFmpeg Options Guide
- $(function(){})和$(document).ready(function(){})
- Velocity配置详解(三)
- 心灵鸡汤之20160413
- 问题Error:Execution failed for task ':weixin:processDebugResources'.
- iOS 本地持久化 "归档"
- 上传图片预览JS脚本 Input file图片预览的实现示例
- 基本类型 primitive types