Linux:C:如何查找哪个线程崩溃了

时间:2019-02-06 03:41:02

标签: multithreading crash

我有10个线程的进程。我想查找进程崩溃的时间,哪个线程导致了崩溃。 有没有一种方法可以在运行时执行此操作。我的意思是不是在整个过程退出之后。 我不想使用信号处理程序。

谢谢, 王子

2 个答案:

答案 0 :(得分:0)

如果您有核心文件,

gdb path/to/executable path/to/core/file

(gdb) thread apply all bt full

将为您提供所有线程的堆栈跟踪。

如果您没有核心文件,

使用

在gdb中运行可执行文件

gdb path/to/executable

(gdb) r

或者如果您有命令行参数,第二个命令将是

(gdb) r yourarg1 yourarg2

然后,当应用程序崩溃时

(gdb) thread apply all bt full

如果要生成核心文件,在运行崩溃的可执行文件之前,可以在终端中执行ulimit -c unlimited以便将核心文件大小设置为无限制。

要在完成后退出gdb ,只需在q提示符下键入(gdb)即可退出。

答案 1 :(得分:0)

请考虑将10个线程中的每一个都放入单独的进程中。