使用google breakpad注册异常处理程序时出现总线错误

时间:2016-06-02 06:39:02

标签: c++ linux google-breakpad

我正在尝试将google breakpad与我的应用程序一起使用。但是这样做我会得到更多的错误。

示例应用程序:

#include<iostream>
using namespace std;

#include "client/linux/handler/exception_handler.h"
static bool breakpadDumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
    return succeeded;
}


int main()
{
    cout << "Hello World! \n";

    //Adding changes for google breakpad
    static google_breakpad::ExceptionHandler* excHandler = NULL;
    cout << "Here-----------! \n";

    // delete excHandler;

    excHandler = new google_breakpad::ExceptionHandler(google_breakpad::MinidumpDescriptor("/opt/minidumps/"), NULL, breakpadDumpCallback, NULL, true, -1);

    cout << "Registered Google Breakpad exceptionHandler\n";

    int *x = NULL;
    *x = 10;

    return 0;
}

我从下面收到错误:

excHandler = new google_breakpad::ExceptionHandler(google_breakpad::MinidumpDescriptor("/opt/minidumps/"), NULL, breakpadDumpCallback, NULL, true, -1);

输出:

Hello World!
Here-----------!
Bus error (core dumped)

我做错了吗?

2 个答案:

答案 0 :(得分:0)

请试试这个

google_breakpad::MinidumpDescriptor(std::string("/opt/minidumps/"))

如果仍然无效,请尝试尽可能使您的代码(完全)与现有的工作示例匹配: http://fossies.org/linux/seafile-client/src/crash-handler.cpp

答案 1 :(得分:0)

我使用的静态库(libbreakpad_client.a)是一个不兼容的。这就是它显示总线错误的原因。我已将其替换为另一个,并且按预期工作。