2012-07-23 57 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命令進行回溯。