2016-08-24 63 views
0

我想用shell腳本調用gdb調試c程序。在這個shell腳本中,有很多事情都做了,並且設置了許多環境變量。如何從shell腳本調用gdb來運行程序,該腳本又通過boost從C++調用:: process

該shell腳本由C++程序中的boost :: process :: launch調用。

我可以更改C++程序,shell腳本和c程序本身,但不能更改此流程的體系結構。

有什麼辦法,以便我可以使用gdb來調試程序。

如果沒有解決方案,有沒有辦法在啓動shell腳本之前轉儲所有的環境設置,以便我可以啓動相同的腳本以便稍後進行調試。我更喜歡便攜和長期解決方案。

回答

2

兩個簡單的選擇:

  1. 連接的gdb程序啓動後gdb -p <pid of process>如果也沒關係,在一個特定的點來阻止它。

  2. 在您要停止的C程序中插入一個raise(SIGSTOP);。一旦進程停止,請附加gdb,如1,設置您需要的任何斷點,然後發送進程SIGCONT信號(kill -CONT <pid of process>)使其繼續。

+0

它不是便攜式解決方案,在這裏,我需要某種形式的無人工干預,並在運行時 –

+0

既然你明確地標記問題的「Linux」我沒想到便攜要緊無需更改代碼。 –