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

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ([email protected]=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

以上是关于Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu16.04使用Qt开发ROS

Ubuntu16.04安装串口调试工具gtkterm

Ubuntu16.04 VTK7.1.0+QT4.8.6+QtCreator开发环境配置

Ubuntu 16.04下GDB调试

ubuntu16.04 18.04 Qt5.11安装Gstreamer

Qt5 (Ubuntu 16.04) 上的 QCA 链接库出错