我有10个线程的进程。我想查找进程崩溃的时间,哪个线程导致了崩溃。 有没有一种方法可以在运行时执行此操作。我的意思是不是在整个过程退出之后。 我不想使用信号处理程序。
谢谢, 王子
答案 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个线程中的每一个都放入单独的进程中。