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 输出。
谢谢,保罗