記錄一下
Ubuntu16.04下寫的Qt程序,調試時沒問題,運行時偶現崩潰
需要在運行時生成core dump文件
首先在pro結尾里加入
QMAKE_CC += -g
QMAKE_CXX += -g
QMAKE_LINK += -g
在終端輸入 ulimit -c 顯示為 0
然后輸入 ulimit -c unlimited
繼續在終端運行編寫的程序
出錯后,會在當前目錄生成 core 文件
然后在終端執行 “gdb 你的程序名 core”
然后輸入 bt 對該錯誤進行跟蹤調試
(gdb) bt
會出現形如下圖的代碼
#0 0x00007fd05dc8fc37 in __GI_raise (sig=sig@entry=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007fd05dc93028 in __GI_abort () at abort.c:89
#2 0x00007fd05e59a535 in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007fd05e5986d6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007fd05e598703 in std::terminate() ()
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007fd05e598922 in __cxa_throw ()
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x0000000000505a6c in Calibration::fromPath(boost::filesystem::path) ()
#7 0x0000000000550b32 in TonavRos::run(int, char**) ()
#8 0x000000000050183e in main ()
然后 輸入 up 數字、 down 數字 可以進入
比如我輸入 up 6
接着輸入 l(list的第一個字母),可以查看出錯的源碼
https://zhuanlan.zhihu.com/p/48607048