如何使用 lldb 在函数中查找静态变量?
How can I look up a static variable in a function with lldb?
我有一个这样的函数(为简洁起见,我省略了大部分函数):
const char *
insn_name(VALUE i)
{
static const char x[] =
"nop" "[=10=]"
"getlocal" "[=10=]"
"setlocal" "[=10=]";
...
}
我想从 lldb 访问 x
。 nm 能够找到符号:
$ nm -C miniruby | grep insn_name.x
00000001002cafa0 s _insn_name.x
00000001002ccbb0 s _insn_name.x
00000001002cdaf0 s _insn_name.x
我可以很好地从 lldb 打印地址:
(lldb) p (char*)0x1002cafa0
(char *) = 0x00000001002cafa0 "nop"
我可以查一下地址的信息:
(lldb) target modules lookup -Av -a 0x1002cafa0
Address: miniruby[0x00000001002cafa0] (miniruby.__TEXT.__const + 11440)
Summary: miniruby`insn_name.x
Module: file = "/Users/aaron/git/ruby/miniruby", arch = "x86_64"
Symbol: id = {0x0000263f}, range = [0x00000001002cafa0-0x00000001002cbb30), name="insn_name.x"
lldb 一定知道这个东西,但我似乎无法弄清楚按名称查找它的命令。最终我想通过 lldb 扩展中的 Python 找到这个地址。
谢谢。
像这样:
image lookup -s insn_name.x
其中 image
是 target modules
的内置 lldb 同义词。
我有一个这样的函数(为简洁起见,我省略了大部分函数):
const char *
insn_name(VALUE i)
{
static const char x[] =
"nop" "[=10=]"
"getlocal" "[=10=]"
"setlocal" "[=10=]";
...
}
我想从 lldb 访问 x
。 nm 能够找到符号:
$ nm -C miniruby | grep insn_name.x
00000001002cafa0 s _insn_name.x
00000001002ccbb0 s _insn_name.x
00000001002cdaf0 s _insn_name.x
我可以很好地从 lldb 打印地址:
(lldb) p (char*)0x1002cafa0
(char *) = 0x00000001002cafa0 "nop"
我可以查一下地址的信息:
(lldb) target modules lookup -Av -a 0x1002cafa0
Address: miniruby[0x00000001002cafa0] (miniruby.__TEXT.__const + 11440)
Summary: miniruby`insn_name.x
Module: file = "/Users/aaron/git/ruby/miniruby", arch = "x86_64"
Symbol: id = {0x0000263f}, range = [0x00000001002cafa0-0x00000001002cbb30), name="insn_name.x"
lldb 一定知道这个东西,但我似乎无法弄清楚按名称查找它的命令。最终我想通过 lldb 扩展中的 Python 找到这个地址。
谢谢。
像这样:
image lookup -s insn_name.x
其中 image
是 target modules
的内置 lldb 同义词。