2013-02-01 67 views
3

我正在創建一個多平臺的Qt應用程序,我希望崩潰報告系統在用戶計算機發生崩潰時生成崩潰報告。稍後,我應該能夠使用崩潰報告中的所有調試信息來查看堆棧跟蹤。我已經看過谷歌breakpad。用於Qt應用程序的多平臺崩潰報告系統

但使用它似乎我需要轉移到MSVC的Windows。現在我在Windows上使用MinGW,需要花費大量時間&努力獲得使用MSVC編譯的所有不同的庫。有沒有什麼辦法可以使用MinGW並仍然可以使用google-breakpad?還是有其他一些可以在多平臺上運行並在Windows上支持mingw的替代方案?

回答

0

目前在Breakpad中不支持MinGW。我認爲除非有人貢獻端口,否則不會很快改變,因爲Google和Mozilla都沒有對MinGW有任何興趣。我不知道有任何其他崩潰報告庫可以像Breakpad那樣以跨平臺的方式工作。

0

我不知道任何開放的多平臺崩潰報告系統,除了google-breakpad。即使谷歌霹靂板不支持MinGW,這是我知道的,你仍然可以從你的應用程序回溯。項目Dr. Mingw提供了很棒的DLL:mgwhelp.dll和exchndl.dll。使用你需要:

  • 用調試信息編譯。見Dr. Mingw常見問題。
  • 包括mgwhelp.dll和應用程序啓動時通過顯式調用LoadLibrary與應用程序二進制exchndl.dll
  • 和負載exchndl.dll( 「exchndl.dll」)

例如像這樣:

QFile drmingw("exchndl.dll"); 
if(drmingw.exists()) 
{// If don't want create reports just delete exchndl.dll from installer 
    LoadLibrary(L"exchndl.dll"); 
} 

崩潰後,你會在哪裏二進制是相同的目錄中找到文件binary_name.RPT與回溯。

我還能做什麼?

  • 在釋放模式條狀調試符號。
win32:!win32-msvc*{ 
    # Strip debug symbols. 
    QMAKE_POST_LINK += objcopy --only-keep-debug bin/${TARGET} bin/${TARGET}.dbg && 
    QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} && 
    QMAKE_POST_LINK += objcopy --add-gnu-debuglink="bin/${TARGET}.dbg" bin/${TARGET} 
} 
  • 每次運行檢查,如果.rpt文件存在,併發送或保存在報告目錄中。例如,我使用gist收集報告。
1

libcrashreporter-qt「應該提供Google Breakpad崩潰報告到Qt應用程序的輕鬆集成」。

它包含打破墊的補丁,使它可以與MinGW工具鏈一起構建。

相關問題