小编Pau*_*ler的帖子

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

我正在使用 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 …
Run Code Online (Sandbox Code Playgroud)

objdump disassembly

5
推荐指数
0
解决办法
616
查看次数

标签 统计

disassembly ×1

objdump ×1