转储可执行文件时我只希望代码段打印标准输出。不是偏移和二进制形式的代码。我可以注意到它来自man objdump.Is有办法吗?
您可以使用抑制目标代码十六进制转储
--no-show-raw-insn
如果你在代码中跳转,那么你需要偏移来理解它们,但是如果你真的想剥离它们,那么用以下代码过滤代码:
objdump -d --no-show-raw-insn myfile.o | perl -p -e 's/^\s+(\S+):\t//;'
示例输出:
0000000000000000 <foo>:
retq
lea 0x0(%rsi),%rsi
lea 0x0(%rdi),%rdi
Disassembly of section .gnu.linkonce.t.goo:
0000000000000000 <goo>:
retq
lea 0x0(%rsi),%rsi
lea 0x0(%rdi),%rdi
如果你想实现与Peeter Joot相同的输出,但不使用Perl命令行。然后您可以使用Grep和Cut工具,如下所示。
objdump -d --no-show-raw-insn my_binary_file.o | grep "^ " | cut -f2,3