追踪程序中止的工具
Tools for tracing a program abortion
我在Ubuntu机器上用C++编写了一个程序,它包含几个线程,每个线程都负责大量的函数和子函数。
程序运行,但每隔大约30分钟代码就会停止运行,我正试图理解原因。到目前为止,我试图:
-
将
try-catch
放在所有代码上:main和每个线程-程序在没有捕获的情况下停止运行:try { //code } catch(const std::exception & e) { } catch(...) { }
2.使用strace
:当代码停止运行时,输出文件的最后一行是:
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, NULL) = 0
nanosleep({0, 10000}, <ptrace(SYSCALL):No such process>
+++ killed by SIGABRT +++
我无法理解是什么原因导致killed by SIGABRT
消息或<ptrace(SYSCALL):No such process>
中止程序
使用
gdb
:I放入(gdb) catch throw (gdb) run
代码开始运行,但gdb似乎停止运行:
Starting program: *****
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff2d6a700 (LWP 13305)]
[Thread 0x7ffff2d6a700 (LWP 13305) exited]
[Inferior 1 (process 13304) exited normally]
(gdb)
如果我在这里做错了什么,我会很高兴知道哪里出了问题,如果没有,是否有其他方法/工具可以跟踪问题?
我开始认为可能是程序外部的东西导致了这个问题(?)。
谢谢。
在退出的所有内容上设置断点
b exit
b _exit
b __exit
b exit_group
如果你不在其他地方使用,也可能杀死变种
b kill
相关文章:
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 所有Visual Studio安装程序崩溃,可视化构建工具也无法正常工作
- 如何在gedit中使用外部工具运行交互式C++程序
- 使用Visual c ++工具与安装程序的Windows桌面
- 我们可以在没有安装工具包的情况下运行CUDA加速程序
- 追踪程序中止的工具
- 为什么我们需要使用android工具链(或NDK)来编译在android应用程序上下文中运行的c/c++代码
- 谷歌性能工具可以用于分析C应用程序吗?
- 使用Qt安装程序框架中的archivegen工具将文件打包为7zip存档
- 在应用程序内部调用linux命令行工具
- 我可以在 Linux CentOS 6 中安装没有驱动程序的 CUDA 吗(只有 cuda 工具包)
- 使用 AWS C++开发工具包的基本程序无法编译
- 工具来帮助最大限度地减少C++程序中宏的使用
- 制作一个安装程序,在安装后安装工具栏
- 程序的内存使用量随着时间的推移而增加,但内存泄漏工具报告没有问题
- 一种使C++代码划分为.h和.cpp文件对程序员透明的工具
- 如何在C++应用程序中使用GnuPG(不像命令行工具那样)
- 如何在win32程序中在单个窗口中添加多个工具栏
- 调试工具跟踪程序中所有STL容器的大小