使用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
分享到:
相关推荐
使用Google Breakpad产生异常dump文件后通常需要敲一堆命令,然后产生你要找的堆栈信息,这里提供的脚本直接运行如下命令crash.sh ./luncher /tmp/d23f8d5e-5832-45ac-da9a718d-7d847b15.dmp ,即可自动产生/tmp/d23...
【Qt使用GoogleBreakpad生成崩溃文件】的知识点详解 在软件开发中,为了提供更好的用户体验和提高产品质量,开发者需要能够捕获并分析程序运行时的崩溃情况。GoogleBreakpad是一款强大的开源工具,它允许开发者在...
Breakpad是由Google开发的一个C++库,它允许应用程序在发生未处理异常或信号时生成崩溃转储(dump)文件。这些转储文件包含了程序崩溃时的内存快照,包括堆栈跟踪、模块信息以及可能的本地变量值。通过分析这些信息...
使用google-breakpad生成dump文件 breakpad的主要功能就是生成dump文件,还可以将dump文件发送的远程http服务器。 breakpad的SVN在这里http://google-breakpad.googlecode.com/svn/trunk linux,mac,solaris,...
Breakpad是一个开源的崩溃报告系统,广泛应用于跨平台软件中,尤其是服务器和桌面应用程序,它能捕获程序崩溃时的内存状态并生成dump文件,便于后续的故障排查。 【描述】提到“里面只有Linux版的”,意味着这个...
google_breakpad 源码,一个非常实用的跨平台的崩溃转储和分析模块,能够捕获程序崩溃报告,生成dump文件。具体可以见我的博客——Google Breakpad 在 windows下捕获程序崩溃报告。
在本教程中,我们将介绍如何在Linux下使用Qt结合qBreakpad库来生成dump文件,并进一步进行bug定位。 首先,qBreakpad是Qt平台上一个用于处理崩溃信息的开源库,它提供了捕获和分析崩溃堆栈的能力。qBreakpad的工作...
3. 将`.dmp`文件和相应的二进制文件发送到服务器或本地进行符号化处理,使用`dump_syms`生成`.sym`文件。 4. 使用`minidump_stackwalk`或对应平台的工具解析`.dmp`文件,结合`.sym`文件获取堆栈跟踪信息。 5. 分析...
"android breakpad dump"指的是利用Google Breakpad工具集来解析和分析这些dump文件的过程。Breakpad是一个跨平台的崩溃报告系统,它能够帮助开发者在应用程序出错时获取详细的堆栈跟踪信息,从而更有效地定位和修复...
Breakpad提供了一个名为`dump_syms`的工具,用于解析符号表并将信息附加到minidump文件。 - **分析minidump**:使用`minidump_stackwalk`工具,结合符号文件(`.pdb`或`.breakpad`),可以将minidump转换为详细的...
在软件开发过程中,遇到程序崩溃或异常情况时,为了定位问题根源,开发者通常会借助于崩溃转储(dump)文件进行分析。其中,breadpad是一个开源的崩溃报告系统,它能够生成dmp文件,而minidump_stackwalk工具则专门...
3. **编译Breakpad**:使用VS2015的命令行工具或项目文件编译Breakpad,生成所需的客户端库和工具,如minidump_writer和minidump_dump。 4. **集成到项目**:将编译得到的Breakpad库链接到你的C++项目中,配置相应...
当应用程序遇到未预期的错误或异常时,生成dump文件可以记录程序崩溃时的内存状态,帮助开发者定位问题。`qBreakpad`是Qt平台上一个方便的工具,它允许开发者在应用程序出错时自动创建这些dump文件,并使用调试工具...
3. **生成符号文件**:使用`dump_syms`工具处理你的可执行文件或动态库,生成对应的符号文件。 4. **部署和收集崩溃信息**:部署带有Breakpad支持的应用程序,并确保崩溃转储文件能够被收集到。 5. **分析崩溃**:...
- **崩溃捕获**:当程序异常终止时,Breakpad生成一个minidump文件,记录下当时的内存状态。 - **符号处理**:Breakpad使用符号信息(如.debug信息或.PDB文件)将内存地址转换为可读的函数名和源代码行号,提供...
Breakpad的核心功能是生成和解析崩溃转储(crash dump)文件,这些文件包含了程序崩溃时的内存快照。它支持多种操作系统,包括Windows、Linux和macOS。通过Breakpad,开发者可以收集到关于应用程序崩溃时的堆栈跟踪...
breakpad可以在程序崩溃时触发dump写入操作,也可以在没有触发dump时主动写dump文件。breakpad支持windows、linux、macos、android、ios等。目前已有Google Chrome, Firefox, Google Picasa, Camino, Google Earth等...
使用Breakpad的`dump_syms`工具生成特定于你的二进制文件的符号信息。这将帮助解析堆栈跟踪并提供有意义的错误信息。 4. **集成客户端到你的项目** 将编译好的Breakpad客户端库链接到你的C/C++项目中。这通常涉及...
Breakpad的核心功能是崩溃转储(crash dump)生成和分析。当应用程序崩溃时,Breakpad能够捕获当时的内存状态,并将其保存为一个二进制文件,称为崩溃转储文件。这个文件包含了程序崩溃时的堆栈信息、线程状态、全局...
Google Breakpad是一个开源工具,它被广泛用于处理C++应用程序的崩溃情况,为开发者提供了生成崩溃转储(dump)文件的功能,从而可以分析并解决运行时错误。本篇文章将深入探讨如何使用基于Google Breakpad的H文件来...