2010-11-28 237 views
17

我調試用gdb的程序。每當我錯過一個斷點或決定添加另一個觀察點時,我必須殺死這個進程並重新運行它。爲了將現有的gdb附加到它,我使用attach <pid>。但是,我必須找出新過程的PID。如何從gdb命令提示符執行外部命令?

我做的,今天是掛起GDB,與ps -C <program_name>得到PID,然後返回到GDB附加到它的方式。

有什麼辦法在不退出到shell中運行從GDB命令提示符UNIX命令,這樣我就可以從GDB裏做這樣的事情:

attach `ps -C <program_name>` 

我在Linux上運行。

回答

18

(GDB)幫助殼
執行的 線的其餘部分爲外殼命令。沒有 參數,請運行較差的shell。

完成後,您可以使用'exit'返回到gdb。

9
gdb$ shell 

shell$ execute_your_commands 

shell$ exit 

gdb$ you_have_returned_back_to_gdb_prompt 
4

你可以使用shell其次是要執行的命令,例如:

gdb$ shell g++ tsort.c -o tsort 

這是以前的答案的只有很短的形式。

+0

在這種模式下的gdb似乎並沒有回暖,或者能夠在有核心轉儲報告問題。 – Derek 2018-02-10 15:55:12

1

只是對接受的答案擴大,對shell快捷方式是!

(GDB)幫助!

執行行的其餘部分作爲外殼命令。沒有參數, 運行較差的外殼。