获取在GDB中运行的挂起进程的堆栈跟踪
问题描述:
我想弄清楚为什么我正在使用的程序挂起。获取在GDB中运行的挂起进程的堆栈跟踪
我最初以为通过GDB运行它可以解决问题,但我得到的是和以前完全相同的症状 - 有没有什么办法可以发送信号或者什么给GDB来打印堆栈跟踪,所以我可以尝试看看发生了什么?
我正在使用FreeBSD-9.0。
答
我最终通过使用gcore(1)创建一个coredump来获得回溯,然后用在GDB中创建的coredump启动myprogram。
答
只需按下Control-C,就可以中断GDB中正在运行的进程。
然后,您可以使用backtrace
命令进行回溯。
您可以使用'gdb program pid'将'gdb'附加到正在运行的进程。你试试吗? – 2012-07-23 16:15:36
我已经附加了它 - 我使用命令“gdb myprogram”运行我的程序,并在“gdb内”运行时挂起。我正在寻找某种交互式gdb命令,只是吐出行号/堆栈/等。 – javanix 2012-07-23 16:16:38
或使用'gcore(1)'http://www.freebsd.org/cgi/man.cgi?query=gcore&sektion=1 – 2012-07-23 16:16:57