如何用lldb打印参数?

问题描述 投票:0回答:1

我想使用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

printing parameters lldb
1个回答
1
投票

我不确定你想要实现什么,所以我可能不会回答你的问题......

但是,如果你在这里称为aaaaaa的行的开头:

int eee = aaaaaa(x,y);

然后x可能还没有被复制到参数传递位置 - 这是属于这个源代码行的代码的一部分。您可以查看反汇编来检查。因此,如果要查看复制到传递位置的值,则必须逐步执行此源代码行中的指令,以到达将值从堆栈复制到传递寄存器/堆栈槽的位置。

否则你可以进入aaaaaa,如果你在进入函数时停止正确,那么该值仍将在传递位置。

© www.soinside.com 2019 - 2024. All rights reserved.