2012-12-18 63 views
22

我想預定義的GDB腳本一些斷點和調用這些斷點一些特殊的命令,之後自動繼續執行程序。因此,理想情況下,我想有一個像GDB腳本如下:GDB腳本:在執行命令,選擇斷點

b someFunction 
... 
if breakpoint from above reached do: 
    print var1 
    call someOtherFunction 
    continue 
done 

另外一個不幸的事實是,我可以不依賴於Python接口上使用斷點,因爲在gdb的版本我目前工作的服務器太舊了!

+0

[在gdb中某個斷點命中時執行特定操作]的可能重複(http://stackoverflow.com/questions/6517423/do-specific-action-when-certain-breakpoint-hits-in-gdb) –

回答

30

你應該看看command命令,它允許您添加gdb命令爲斷點被擊中。見GDB手冊breakpoint command list部分。

例如:

break someFunction 
commands 
print var1 
end 

的意志,當someFunction斷點自動print var1命中。

+8

感謝你,那是關鍵!一個小附記:如果你使用了這樣的命令擁有豐富的輸出,並且不希望它每次停止它擊中終端的底部(因爲那樣的話GDB會問「類型繼續,或Q 退出」) ,只是國家在gdb或腳本「設置分頁關」。 –

+0

注意,這並不在非交互模式(例如--batch或MI模式)工作,直到https://sourceware.org/bugzilla/show_bug.cgi?id=10079是固定 – pixelbeat

+1

如果說我的魔杖執行相同的命令對於多個斷點,那麼該怎麼做呢? (沒有複製粘貼;) –