我正在使用objdump来生成C代码的反汇编,并想知道是否有办法从堆中获取变量的名称(.bss部分)以用于.text部分反汇编,而不是十六进制地址
例如,
int main(void)
{
while (1)
{
request_ID = Receive(0, buffer, MSG_SIZE, 0);
}
return 0;
}
这是编译的,然后使用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>:
我想要的是将变量的十六进制地址替换为它们的名称:
43d: a1 cc 24 00 00 mov eax, <request_ID>
我可以编写一个sed脚本或类似的东西来实现这一点,但是想知道是否有更简单的选项。
更好的方法是打印地址和变量名称以帮助调试。
43d: a1 cc 24 00 00 mov eax, ds:0x24cc <request_ID>
该代码用于在Bochs中测试的操作系统开发,因此如果有其他方法将符号加载到Bochs&#39;调试器,这将是一个很好的解决方法,虽然我仍然希望创建objdump输出。
谢谢,保罗