2011-04-28 69 views
13

我試圖調試使用MinGW的gcc編譯的Windows程序,只有當運行gdb的外部(可能是一些競爭條件......可愛。)時只有segfaults。問題是,當程序崩潰,我不是運行GDB,我無法獲得堆棧跟蹤...我可以選擇在MSVC崩潰時打開程序,但MSVC無法讀取gcc的調試符號,所以它給我的堆棧跟蹤沒用。有沒有辦法在運行使用MinGW編譯的程序時生成gdb可讀的核心轉儲?

有沒有辦法讓Windows創建一個核心轉儲,我以後可以在MinGW的gdb中打開?另外,有沒有辦法採取MSVC的堆棧跟蹤(其中有原始地址,但沒有符號),並使用gcc獲得人類可讀的跟蹤?

回答

8

Windows不會創建核心文件(在Linux上它們是由內核IIRC甩) 你可以嘗試使用gdb連接與打開錯誤對話框,但我懷疑它會工作

如果你使用MSVC,而不是你可以創建一個VisualStudio的轉儲調試的,但沒有辦法創造相同的轉儲用gcc

谷歌提出,你可能會發現有用的軟件,但我不知道它可以生產的東西用gcc

http://code.google.com/p/google-breakpad/

或者您可以設置drmingw爲JIT調試器

drmingw -i 

我敢肯定,這是可能得到的東西也一樣在MinGW的回溯,因爲MinGW的編譯LLVM是能夠傾倒痕跡

http://code.google.com/p/backtrace-mingw/

貌似簡單,但我沒有測試它

與-g3編譯(如果你能-o0)

+0

backtrace-mingw看起來很完美,但是我無法將它建立在我的mingw64系統上。已經有一個問題在這裏的github出口https://github.com/cloudwu/backtrace-mingw – 2017-10-09 00:15:30

+0

drmingw工作很好,謝謝。 – 2017-10-09 01:18:23

相關問題