【问题标题】:how to print paramters with lldb?如何使用 lldb 打印参数?
【发布时间】:2019-04-01 16:24:45
【问题描述】:

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

    我不确定你想要达到什么目标,所以我可能不会回答你的问题......

    但是,如果您在此处调用 aaaaaa 的行的开头:

    int eee = aaaaaa(x,y);
    

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

    否则,您可以进入aaaaaa,并且如果您在进入该函数时立即停止,该值也仍将位于传递位置。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 2013-11-13
    • 1970-01-01
    • 2019-06-03
    • 2014-08-06
    • 2017-02-02
    • 2022-11-10
    • 2015-11-05
    相关资源
    最近更新 更多