2014-06-09 69 views
0

是否有gdb命令來查找函數參數的位置?我正在調試一個函數fun1,它輸入一個我在stdin中輸入的字符串。但是,我無法找到該字符串存儲的位置。第一個參數是否應該存儲在$ ebp + 8中?gdb命令查找參數

+1

'ebp'可能是由函數序言設置的,但它不是強制性的。進入該函數後,第一個參數將在'esp + 4'上,但是'esp'稍後可能會更改。 – Jester

+1

@Jester:我還在做32bit,但是從技術上說,至少第一個參數是8(%ebp)(或者如果沒有序言,則爲8(%esp)):argc;的argv [0];的argv [1]。我認爲你只是說錯話而已。對於OP:請注意上述位置實際上是指向真實位置的指針。 – gnometorule

+0

@gnometorule不確定你的意思。第一個參數在函數輸入時位於'esp + 4',或在'push ebp之後位於'ebp + 8'; mov ebp,esp'序列。當然,4的附加偏移量來自「推」。 – Jester

回答

2

您可以看到使用「信息地址」變量的位置。這將嘗試以用戶友好的方式打印該位置。如果你知道DWARF,你可以使用「maint set dwarf2 always-disassemble 1」讓它轉儲DWARF反彙編。