Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)

记录一下

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

猜你喜欢

转载自www.cnblogs.com/findumars/p/10392832.html