objdump 可以在文本部分使用 bss 变量名吗?

Pau*_*ler 5 objdump disassembly

我正在使用 objdump 来生成 C 代码的反汇编,并想知道是否有办法从堆(.bss 部分)中获取变量名称以用于 .text 部分反汇编,而不是十六进制地址。

例如,

int main(void)
{
    while (1)
    {
        request_ID = Receive(0, buffer, MSG_SIZE, 0);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是编译的,然后使用objdump -D file.o我得到反汇编,包括 .bss 部分:

 400:   55                      push   ebp
 401:   89 e5                   mov    ebp,esp
 403:   83 ec 18                sub    esp,0x18
 ...
 43d:   a1 cc 24 00 00          mov    eax,ds:0x24cc

...
Disassembly of section .bss:

000024cc <request_pID>:
Run Code Online (Sandbox Code Playgroud)

我想要的是将变量的十六进制地址替换为它们的名称:

     43d:   a1 cc 24 00 00          mov    eax, <request_pID>
Run Code Online (Sandbox Code Playgroud)

我可以编写一个 sed 脚本或类似的东西来实现这一点,但想知道是否有更简单的选择。

更好的是同时打印地址和变量名称以帮助调试。

     43d:   a1 cc 24 00 00          mov    eax, ds:0x24cc <request_pID>
Run Code Online (Sandbox Code Playgroud)

该代码用于在 Bochs 中测试的操作系统开发,因此如果有其他方法将符号加载到 Bochs 的调试器中,那将是一个很好的解决方法,尽管我仍然希望创建 objdump 输出。

谢谢,保罗