我想使用lldb输出传递给函数调用的参数。
使用AndroidStudio lldb NDK
int aaaaaa(int a, int b) {
int rrr = a + b;
return rrr;
}
int x = 111;
int y = 222;
int eee = aaaaaa(x,y);
// I know that print x can output the correct result, but I want to
// output the result of x through the register, what should I do?
我使用上面的第二个代码来调用该函数。我想使用lldb打印x和y值。当我使用print $ ebp + 8时,结果不正确。
如何使用lldb命令打印出111?
什么是正确的lldb命令?
这是一个图像链接,以显示我的意思http://note.youdao.com/noteshare?id=7adb0c6fd965d26553c6bbb05896721c
我不确定你想要实现什么,所以我可能不会回答你的问题......
但是,如果你在这里称为aaaaaa的行的开头:
int eee = aaaaaa(x,y);
然后x可能还没有被复制到参数传递位置 - 这是属于这个源代码行的代码的一部分。您可以查看反汇编来检查。因此,如果要查看复制到传递位置的值,则必须逐步执行此源代码行中的指令,以到达将值从堆栈复制到传递寄存器/堆栈槽的位置。
否则你可以进入aaaaaa
,如果你在进入函数时停止正确,那么该值仍将在传递位置。