2016-12-02 62 views
0

就像上面說的那樣。該程序需要依次與其他人通過腳本調用,並且我想讓它自動運行,以便儘可能真實地符合實際運行條件。如何讓gdbserver在啓動時運行目標程序?

編輯

我沒能找到一個答案,但以防萬一有人來尋找這裏就是我的工作圍繞它,因爲我有目標進入GDB和屏幕。

screen -d -m gdb -x debugstart 

其中debugstart是包含一個簡單的腳本:

file program 
r 

這將啓動屏幕會話,並在它啓動gdb其開始運行您的程序,然後從屏幕會話detatch所以你可以屏幕-r當你需要看看調試器。

回答

0

你不解釋你爲什麼要GDB跟蹤你的程序,我想它是在運行時(例如致命錯誤的信號)捕獲錯誤,這是一個很好的做法,以防止可重現的錯誤。

因此,一種方法是使用選項--multi運行gdbserver。然後,您將能夠遠程運行您的程序,然後按ctrlc(或命令interrupt)停止執行。

運行gdbserver的

$ gdbserver --multi <server address> 

GDB腳本:

target extended-remote <server address> 
remote put <your program> 
set remote exec-file <your program> 
# you could pre-set breakpoints, or whatever 
run 
# ctrl-c to interrupt the execution of the started process 

否則,你可以簡單地運行您的程序,然後在需要時遠程連接到它gdbserver --attach

+0

正如你猜測的那樣,我試圖抓住一個致命的錯誤。但是,如果在系統啓動過程中調用該錯誤,那麼該錯誤似乎只會發生,因此在崩潰之前無法運行gdbserver --attach。無論如何,我不確定gdbserver是否正確。 –

相關問題