Qt中使用Google Breakpad捕獲程式崩潰異常
一、Google Breakpad原始碼的下載和編譯
1、https://github.com/google/breakpad.git,原始碼地址,git clone XXX克隆即可
2、cd breakpad
3、./configure
4、make
5、make完這裡會報錯breakpad/src/third_party/lss/linux_syscall_support.h沒有這個檔案,編譯時會出現這個錯誤
6、該檔案可在https://chromium.googlesource.com/linux-syscall-support/下載,並放到breakpad/src/third_party/lss/中,若實在無法下載的同學,可以在以下連結下載linux_syscall_support.h:
可以到Linux公社資源站下載:
------------------------------------------分割線------------------------------------------
免費下載地址在ofollow,noindex">http://linux.linuxidc.com/
使用者名稱與密碼都是www.linuxidc.com
具體下載目錄在/2018年資料/9月/12日/Qt中使用Google Breakpad捕獲程式崩潰異常/
下載方法見http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
7、再次執行3和4,即可成功
二、如何使用
#include "client/linux/handler/exception_handler.h"
// 寫完minidump後的回撥函式
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
printf("Dump path: %s\n", descriptor.path()); return succeeded;
}
// 觸發crash來測試
void crash()
{
volatile int* a = (int*)(NULL); *a = 1;
}
int main(int argc, char* argv[])
{
// 初始化
ExceptionHandler google_breakpad::MinidumpDescriptor descriptor("/tmp");
// minidump檔案寫入到的目錄
google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback, NULL, true, -1); crash();
return 0;
}
1、這樣就會在/tmp下生成.dmp檔案
2、為了生成可讀的stack trace, breakpad需要你將binaries裡的除錯符號(debugging symbols)轉換成基於文字格式的symbol files。
3、接著執行 dump_syms 命令來生成 symbol files,如下:$ google-breakpad/src/tools/linux/dump_syms/dump_syms ./test > test.sym
4、breakpad包含一個叫做 minidump_stackwalk 的工具來將 minidump 檔案,外加symbol files來生成一個人可讀的stack trace
5、$ google-breakpad/src/processor/minidump_stackwalk minidump.dmp test.sym > test.txt
6、test.txt就是最終生成的可讀的異常檔案用於分析
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-09/154032.htm