2014-06-09 40 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反汇编。