记录一下
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