基于Google breakpad生成C++程序崩溃报告

开发环境:(1)VS2015
(2)Google breakpad

实现功能: 抓取C++程序崩溃报告。本人测试可以抓取的异常有:空指针赋值,除数为零操作。其他的没有测试过,所以不知道能不能捕获。

实现过程:在开始做的东西的时候,也在网上搜了一些教程,但是能够完整以零基础的方式写的教程很少(声明:本教程也不是以零基础的方式写的,我只是写一下自己做这个东西的时候遇到的一些坑和提供一些文件,直接跳过自己生成.lib环节,方便你们开发)。但是呢,实现抓取C++程序崩溃报告的最终目的是生成一个.lib文件。为了方便我直接提供我做好生成的.lib文件(链接:https://download.csdn.net/download/whj1688/12534650)。

如果你们想自己一步一步的实现的话,可能会遇到这样的错误:执行这句(tools\gyp\gyp.bat --no-circular-check client\windows\breakpad_client.gyp)还是出现问题。问题如下(gyp: client\windows\breakpad_client.gyp not found)。出现这个错误可能是因为你下载的breakpad没有包含src文件夹,这个src文件夹里面有一个client文件夹的,在这个文件夹,我在开始做的时候下载的breakpad包也是没有的,所以那时候我去GitHub上下载了。下面呢,我会提供一个下载链接(链接:https://download.csdn.net/download/whj1688/12534710)。

同时呢,我也提供一下我提取一个在有.lib文件的情况下,做这个东西所涉及到的一些.h文件。(链接:https://download.csdn.net/download/whj1688/12534669)。注意的是,这些.h文件的头文件包含我是修改过得,其他东西完全没有动!举一个例子具体如下:第一个框是原始方式,第二个是我修改后的。那时候只是为了方面直接把头文件放在工程目录下。
在这里插入图片描述
所以.h文件的具体放置如下:这个你们可以自己修改,不过你修改了之后,需要改一下.h上的#include包含头文件。
在这里插入图片描述
最后提一下放置.lib文件的路劲:
在这里插入图片描述
本人写好的工程就不提供下载链接了(我也没有上传)。如果你们是做的过程中遇到问题也是可以私信我的。如果我懂的一定解答(本人只是个小辣鸡)。
最后感谢一下,那些写这方面的前辈,没有前者的开路,也就没有本人这篇博客的出现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Breakpad 是一个开源的崩溃报告库,它可以捕获应用程序崩溃信息,生成崩溃报告,以便于开发人员进行分析和修复。 要捕获 C++ 标准库的崩溃,需要使用 Breakpad 提供的异常处理机制。在 C++ 中,异常是通过 `try-catch` 语句块来处理的,当程序遇到异常时,会跳转到相应的 `catch` 块中进行处理。Breakpad 利用这个机制,在 `catch` 块中捕获异常并生成崩溃报告。 具体的实现步骤如下: 1. 在应用程序使用 Breakpad 库,将崩溃信息保存到指定的文件中。 2. 在程序使用 `try-catch` 语句块捕获异常。 3. 在 `catch` 块中,调用 Breakpad 提供的函数,将崩溃信息写入文件。 以下是一个使用 Breakpad 捕获 C++ 标准库崩溃的示例代码: ```c++ #include <stdexcept> #include "client/linux/handler/exception_handler.h" bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded) { // 将崩溃信息写入文件 return succeeded; } int main() { // 创建 Breakpad 异常处理器 google_breakpad::MinidumpDescriptor descriptor("."); google_breakpad::ExceptionHandler eh(descriptor, NULL, DumpCallback, NULL, true, -1); try { // 在这里写下可能会抛出异常的代码 throw std::runtime_error("C++ 标准库崩溃"); } catch (...) { // 在 catch 块中调用 Breakpad 的 WriteMinidump 函数 eh.WriteMinidump(); } return 0; } ``` 在上面的代码中,`DumpCallback` 函数用于将崩溃信息写入文件,`main` 函数中创建了一个 Breakpad 异常处理器,并在 `try-catch` 语句块中捕获异常。当程序遇到异常时,会跳转到 `catch` 块中,调用 Breakpad 的 `WriteMinidump` 函数将崩溃信息写入文件。 需要注意的是,使用 Breakpad 捕获崩溃信息时,需要在编译时链接 Breakpad 库,并将 Breakpad 的头文件包含在程序中。同时,需要在程序中注册异常处理器,以便于在发生异常时能够捕获崩溃信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值