如何使用lldb在函数中查找静态变量?

问题描述

我有一个像这样的功能(为简洁起见,我省略了大部分功能):

const char *
insn_name(VALUE i)
{
    static const char x[] =
        "nop" "\0"
        "getlocal" "\0"
        "setlocal" "\0";
    ...
}

我想从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 *) $45 = 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

其中imagetarget modules的内置lldb同义词。