2010-08-17 48 views
2

我想查看函數的哪個參數和返回值。我使用gdb斷點命令列表(gdb命令腳本)如下:如何使用gdb命令列表打印函數的參數並返回值而不暫停?

int foo(int) 

(gdb) break foo 
(gdb) print $r0 
(gdb) finish 
(gdb) print $r0 
(gdb) continue 
(gdb) end 

但它只打印參數。

我之所以從這裏GDB Breakpoint command lists

在命令列表中的任何其他命令,即恢復執行命令後,將被忽略。

任何幫助表示讚賞。

回答

2

如果您想在那裏關聯命令,則需要在函數結尾處有第二個斷點。

+0

我沒有'foo()'的源代碼。我如何找到函數foo()的正文的結尾? – 2010-08-18 04:05:52

+0

當您在foo()中的斷點處停止時,反彙編命令應該反彙編整個函數,然後在用'break * 0xaddress'顯示的最後一個地址處設置一個斷點。根據你的架構,應該是'retq'或類似的東西。可能會顯示多個返回點。你應該爲它們設置一個斷點。 – 2010-08-18 05:26:56

+0

謝謝,我正在胳膊上工作。 – 2010-08-18 05:28:22