Использование Google Breakpad для приложения MinGW-w64

Я пытаюсь интегрировать Google Breakpad в проект Windows Qt.

Когда я компилировал его с MinGW (не с w64), Breakpad работал как положено и генерировал файл Minidump при сбое приложения.

Тем не менее, когда я компилирую тот же код с MinGW-w64, приложение просто с треском проваливается без файла Minidump.

Эта проблема может быть воспроизведена с помощью простой тестовой программы:

#include "breakpad/client/windows/handler/exception_handler.h"#include "breakpad/client/windows/sender/crash_report_sender.h"
void test()
{
// install the exception handler
std::wstring prod(L"some prod");
std::wstring ver(L"some ver");
std::wstring subver(L"some subver");
static google_breakpad::CustomInfoEntry custom_entries[] = {
google_breakpad::CustomInfoEntry(L"prod", prod.c_str()),
google_breakpad::CustomInfoEntry(L"ver", ver.c_str()),
google_breakpad::CustomInfoEntry(L"subver", subver.c_str()),
};
static google_breakpad::CustomClientInfo custom_info = {custom_entries, 3};

std::wstring path(L"some/path/to/dump/file");
auto handler = new google_breakpad::ExceptionHandler(path, nullptr, nullptr, nullptr, google_breakpad::ExceptionHandler::HANDLER_ALL, MiniDumpNormal, (const wchar_t *)nullptr, &custom_info);

// feed crash
*(int*)0x1 = 1;
}

int main()
{
test();
return 0;
}

Код скомпилирован вместе с исходным деревом Breakpad (не как двоичная библиотека)

Похоже, что обработчик исключений не вызывается. Функция обратного вызова не будет вызвана, если я зарегистрирую ее в ctor google_breakpad::ExceptionHandler,

Так почему же это происходит? Можно ли интегрировать Breakpad в проект, скомпилированный MinGW-w64?

5

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]