如何用lldb打印参数?
how to print paramters with lldb?
我想使用 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 命令是什么?
这是一张图片link来展示我的意思http://note.youdao.com/noteshare?id=7adb0c6fd965d26553c6bbb05896721c
我不确定你想达到什么目的,所以我可能不会回答你的问题...
但是如果你在此处调用 aaaaaa 的行的开头:
int eee = aaaaaa(x,y);
那么 x 可能还没有被复制到参数传递位置 - 这是属于该源代码行的代码的一部分。您可以查看反汇编来检查这一点。因此,如果您想查看复制到传递位置的值,您将必须在此源代码行中逐步执行指令,以到达将值从堆栈复制到传递的 register/stack 插槽的位置。
否则您可以进入 aaaaaa
并且如果您在进入该函数时立即停止,该值也将仍然位于传递位置。
我想使用 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 命令是什么?
这是一张图片link来展示我的意思http://note.youdao.com/noteshare?id=7adb0c6fd965d26553c6bbb05896721c
我不确定你想达到什么目的,所以我可能不会回答你的问题...
但是如果你在此处调用 aaaaaa 的行的开头:
int eee = aaaaaa(x,y);
那么 x 可能还没有被复制到参数传递位置 - 这是属于该源代码行的代码的一部分。您可以查看反汇编来检查这一点。因此,如果您想查看复制到传递位置的值,您将必须在此源代码行中逐步执行指令,以到达将值从堆栈复制到传递的 register/stack 插槽的位置。
否则您可以进入 aaaaaa
并且如果您在进入该函数时立即停止,该值也将仍然位于传递位置。