如何在LLDB的memory read命令中使用变量作为count参数?
如何在LLDB的
memory read命令中使用变量作为count参数? 在调试如下C程序时,在return 0处设置断点:
#include <stdio.h> #include <string.h> int main(int argc, const char * argv[]) { char *str = "Hello"; size_t len = strlen(str); return 0; // <-- 在此处设置断点 }
使用固定数值作为count参数可以正常读取内存:
(lldb) memory read --count 5 str 0x100000fae: 48 65 6c 6c 6f Hello
但直接使用变量len作为count参数会报错:
(lldb) memory read --count len str error: invalid uint64_t string value: 'len'
要使用变量的值作为memory read的count参数,需要让LLDB先对变量求值,将结果作为数值参数传入,以下是两种可行方法:
- 用反引号包裹表达式求值命令
把变量放在反引号包裹的expr命令中,让LLDB先计算变量的实际值:
(lldb) memory read --count `expr len` str
- 使用LLDB表达式替换语法
用$()包裹变量表达式,直接求值后传入参数:
(lldb) memory read --count $(len) str
如果变量类型与LLDB要求的uint64_t不匹配(比如部分架构下size_t为32位),可以显式转换类型:
(lldb) memory read --count $(uint64_t)len str
执行上述命令后,就能正确读取对应长度的内存内容。
内容的提问来源于stack exchange,提问作者user11253534
相关产品推荐
相关产品推荐

