使用google breakpad生成dump文件
breakpad的主要功能就是生成dump文件,还可以将dump文件发送的远程http服务器。
breakpad的SVN在这里http://google-breakpad.googlecode.com/svn/trunk
linux,mac,solaris,windows下面产生dump文件的例子文件在这几个文件里面,他们的流程几乎是一样的。
src/client/linux/handler/exception_handler_test.cc
src/client/mac/handler/exception_handler_test.cc
src/client/solaris/handler/exception_handler_test.cc
src/processor/testdata/test_app.cc
首先编译breakpad中的exception_handler库,然后链接过去就可以了。
另外src\client\windows\tests\crash_generation_app这个测试工程总是dump失败,谁知道告诉我。
mozilla有一个完全跨平台的dump toolkit,在这里可以找到源代码
http://mxr.mozilla.org/mozilla/source/toolkit/crashreporter/nsExceptionHandler.h
http://mxr.mozilla.org/mozilla/source/toolkit/crashreporter/nsExceptionHandler.cpp
就拿上面windows的例子来说,代码如下。
#include <cstdio>
#include "client/windows/handler/exception_handler.h"
namespace {
static bool callback(const wchar_t *dump_path, const wchar_t *id,
void *context, EXCEPTION_POINTERS *exinfo,
MDRawAssertionInfo *assertion,
bool succeeded) {
if (succeeded) {
printf("dump guid is %ws\n", id);
} else {
printf("dump failed\n");
}
fflush(stdout);
return succeeded;
}
static void CrashFunction() {
int *i = reinterpret_cast<int*>(0x45);
*i = 5; // crash!
}
} // namespace
int main(int argc, char **argv) {
google_breakpad::ExceptionHandler eh(
L".", NULL, callback, NULL,
google_breakpad::ExceptionHandler::HANDLER_ALL);
CrashFunction();
printf("did not crash?\n");
return 0;
}
运行完之后会在当前目录下生成一个dmp文件,用windbg打开,在命令行中输入.ecxr,然后查看调用崩溃现场,图片如下。
其他平台可以用gdb查看崩溃现场。
- 大小: 44.3 KB
分享到:
相关推荐
文件包含了使用GoogleBreakpad捕获崩溃文件需要的文件,包括lib及头文件,可以看我的博客里介绍了如何使用GoogleBreakpad生成dump文件,来分析程序崩溃原因。
使用google-breakpad生成dump文件 breakpad的主要功能就是生成dump文件,还可以将dump文件发送的远程http服务器。 breakpad的SVN在这里http://google-breakpad.googlecode.com/svn/trunk linux,mac,solaris,...
google_breakpad 源码,一个非常实用的跨平台的崩溃转储和分析模块,能够捕获程序崩溃报告,生成dump文件。具体可以见我的博客——Google Breakpad 在 windows下捕获程序崩溃报告。
将Google_breakpad中Exception_Handler部分提取出来打包封装成动态链接库,在原代码基础上增加宏定义,以及导出函数代码
minidump_stackwalk工具,直接解压就能用。 windows平台下使用,用于分析breadpad生成的dmp文件。 使用方法参见博客:blog.csdn.net/qq8864
breakpad可以在程序崩溃时触发dump写入操作,也可以在没有触发dump时主动写dump文件。breakpad支持windows、linux、macos、android、ios等。目前已有Google Chrome, Firefox, Google Picasa, Camino, Google Earth等...
breakpad谷歌开源crash库,已经生成sln文件,vs可以直接编译
crashpad 第二部分 Crashpad的进程外崩溃报告技术思路跟Breakpad是类似的。启动一个Server进程,Server进程创建一个命名管道。...Server根据之前Clinet注册的信息,读取Client进程里面的数据,来生成dump。
crashpad 第一部分 Crashpad的进程外崩溃报告技术思路跟Breakpad是类似的。启动一个Server进程,Server进程创建一个命名管道。...Server根据之前Clinet注册的信息,读取Client进程里面的数据,来生成dump。
crashpad 第一部分 Crashpad的进程外崩溃报告技术思路跟Breakpad是类似的。启动一个Server进程,Server进程创建一个命名管道。...Server根据之前Clinet注册的信息,读取Client进程里面的数据,来生成dump。