`
zhangyafei_kimi
  • 浏览: 266039 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用google breakpad生成dump文件

阅读更多
使用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自动解析脚本

    使用Google Breakpad产生异常dump文件后通常需要敲一堆命令,然后产生你要找的堆栈信息,这里提供的脚本直接运行如下命令crash.sh ./luncher /tmp/d23f8d5e-5832-45ac-da9a718d-7d847b15.dmp ,即可自动产生/tmp/d23...

    Qt 使用GoogleBreakpad生成崩溃文件

    【Qt使用GoogleBreakpad生成崩溃文件】的知识点详解 在软件开发中,为了提供更好的用户体验和提高产品质量,开发者需要能够捕获并分析程序运行时的崩溃情况。GoogleBreakpad是一款强大的开源工具,它允许开发者在...

    GoogleBreakpad捕获崩溃文件需要的文件,包括lib库文件及头文件

    Breakpad是由Google开发的一个C++库,它允许应用程序在发生未处理异常或信号时生成崩溃转储(dump)文件。这些转储文件包含了程序崩溃时的内存快照,包括堆栈跟踪、模块信息以及可能的本地变量值。通过分析这些信息...

    google-breakpad 源码(一个开源多平台的系统崩溃报告)

    使用google-breakpad生成dump文件 breakpad的主要功能就是生成dump文件,还可以将dump文件发送的远程http服务器。 breakpad的SVN在这里http://google-breakpad.googlecode.com/svn/trunk linux,mac,solaris,...

    qBreakpad dump文件 分析工具

    Breakpad是一个开源的崩溃报告系统,广泛应用于跨平台软件中,尤其是服务器和桌面应用程序,它能捕获程序崩溃时的内存状态并生成dump文件,便于后续的故障排查。 【描述】提到“里面只有Linux版的”,意味着这个...

    google_breakpad 源码

    google_breakpad 源码,一个非常实用的跨平台的崩溃转储和分析模块,能够捕获程序崩溃报告,生成dump文件。具体可以见我的博客——Google Breakpad 在 windows下捕获程序崩溃报告。

    Linux下Qt生成dump文件并定位bug(基于qBreakpad)

    在本教程中,我们将介绍如何在Linux下使用Qt结合qBreakpad库来生成dump文件,并进一步进行bug定位。 首先,qBreakpad是Qt平台上一个用于处理崩溃信息的开源库,它提供了捕获和分析崩溃堆栈的能力。qBreakpad的工作...

    google_breakpad工具.zip

    3. 将`.dmp`文件和相应的二进制文件发送到服务器或本地进行符号化处理,使用`dump_syms`生成`.sym`文件。 4. 使用`minidump_stackwalk`或对应平台的工具解析`.dmp`文件,结合`.sym`文件获取堆栈跟踪信息。 5. 分析...

    android breakpad dump

    "android breakpad dump"指的是利用Google Breakpad工具集来解析和分析这些dump文件的过程。Breakpad是一个跨平台的崩溃报告系统,它能够帮助开发者在应用程序出错时获取详细的堆栈跟踪信息,从而更有效地定位和修复...

    google-breakpad(刚git下来的,热乎的)

    Breakpad提供了一个名为`dump_syms`的工具,用于解析符号表并将信息附加到minidump文件。 - **分析minidump**:使用`minidump_stackwalk`工具,结合符号文件(`.pdb`或`.breakpad`),可以将minidump转换为详细的...

    minidump_stackwalk工具,用于分析breadpad生成的dmp文件。

    在软件开发过程中,遇到程序崩溃或异常情况时,为了定位问题根源,开发者通常会借助于崩溃转储(dump)文件进行分析。其中,breadpad是一个开源的崩溃报告系统,它能够生成dmp文件,而minidump_stackwalk工具则专门...

    vs2015中breakpad抓取C++程序崩溃报告

    3. **编译Breakpad**:使用VS2015的命令行工具或项目文件编译Breakpad,生成所需的客户端库和工具,如minidump_writer和minidump_dump。 4. **集成到项目**:将编译得到的Breakpad库链接到你的C++项目中,配置相应...

    Qt下使用qBreakpad生成dump进行异常定位

    当应用程序遇到未预期的错误或异常时,生成dump文件可以记录程序崩溃时的内存状态,帮助开发者定位问题。`qBreakpad`是Qt平台上一个方便的工具,它允许开发者在应用程序出错时自动创建这些dump文件,并使用调试工具...

    breakpad,可以直接使用的工具库(Linux)

    3. **生成符号文件**:使用`dump_syms`工具处理你的可执行文件或动态库,生成对应的符号文件。 4. **部署和收集崩溃信息**:部署带有Breakpad支持的应用程序,并确保崩溃转储文件能够被收集到。 5. **分析崩溃**:...

    linux google breakpad

    - **崩溃捕获**:当程序异常终止时,Breakpad生成一个minidump文件,记录下当时的内存状态。 - **符号处理**:Breakpad使用符号信息(如.debug信息或.PDB文件)将内存地址转换为可读的函数名和源代码行号,提供...

    breakpad_x64-windows.7z

    Breakpad的核心功能是生成和解析崩溃转储(crash dump)文件,这些文件包含了程序崩溃时的内存快照。它支持多种操作系统,包括Windows、Linux和macOS。通过Breakpad,开发者可以收集到关于应用程序崩溃时的堆栈跟踪...

    google_breakpad源码

    breakpad可以在程序崩溃时触发dump写入操作,也可以在没有触发dump时主动写dump文件。breakpad支持windows、linux、macos、android、ios等。目前已有Google Chrome, Firefox, Google Picasa, Camino, Google Earth等...

    cpp-集成Breakpad来获取发生nativecrash时候的系统信息和线程堆栈信息

    使用Breakpad的`dump_syms`工具生成特定于你的二进制文件的符号信息。这将帮助解析堆栈跟踪并提供有意义的错误信息。 4. **集成客户端到你的项目** 将编译好的Breakpad客户端库链接到你的C/C++项目中。这通常涉及...

    2018年10月12日最新的google breakpad源码,包含linux_syscall_support.h

    Breakpad的核心功能是崩溃转储(crash dump)生成和分析。当应用程序崩溃时,Breakpad能够捕获当时的内存状态,并将其保存为一个二进制文件,称为崩溃转储文件。这个文件包含了程序崩溃时的堆栈信息、线程状态、全局...

    生成C++程序崩溃报告涉及到的H文件

    Google Breakpad是一个开源工具,它被广泛用于处理C++应用程序的崩溃情况,为开发者提供了生成崩溃转储(dump)文件的功能,从而可以分析并解决运行时错误。本篇文章将深入探讨如何使用基于Google Breakpad的H文件来...

Global site tag (gtag.js) - Google Analytics