1

アプリケーションで Google ブレークパッドを使用しようとしています。しかし、そうしている間にバスエラーが発生します。

サンプル アプリケーション:

#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)

私は何か間違ったことをしていますか?

4

2 に答える 2

0

使用していた静的ライブラリ (libbreakpad_client.a) は互換性のないものでした。そのため、バス エラーが表示されます。別のものに交換しましたが、期待どおりに機能しています。

于 2016-06-03T04:17:22.407 に答える
0

これを試してください

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

それでもうまくいかない場合は、コードを (正確に) 既存の動作例と可能な限り一致させるようにしてください: http://fossies.org/linux/seafile-client/src/crash-handler.cpp

于 2016-06-02T09:48:09.290 に答える