2012-07-23 70 views
0

我想弄清楚为什么我正在使用的程序挂起。获取在GDB中运行的挂起进程的堆栈跟踪

我最初以为通过GDB运行它可以解决问题,但我得到的是和以前完全相同的症状 - 有没有什么办法可以发送信号或者什么给GDB来打印堆栈跟踪,所以我可以尝试看看发生了什么?

我正在使用FreeBSD-9.0。

+0

您可以使用'gdb program pid'将'gdb'附加到正在运行的进程。你试试吗? – 2012-07-23 16:15:36

+0

我已经附加了它 - 我使用命令“gdb myprogram”运行我的程序,并在“gdb内”运行时挂起。我正在寻找某种交互式gdb命令,只是吐出行号/堆栈/等。 – javanix 2012-07-23 16:16:38

+0

或使用'gcore(1)'http://www.freebsd.org/cgi/man.cgi?query=gcore&sektion=1 – 2012-07-23 16:16:57

回答

1

我最终通过使用gcore(1)创建一个coredump来获得回溯,然后用在GDB中创建的coredump启动myprogram。

1

只需按下Control-C,就可以中断GDB中正在运行的进程。

然后,您可以使用backtrace命令进行回溯。