Linux kernel 如何仅将elf文件的一个文件或一个函数转换为程序集?

Linux kernel 如何仅将elf文件的一个文件或一个函数转换为程序集?,linux-kernel,elf,disassembly,Linux Kernel,Elf,Disassembly,我有一个非常大的代码库(内核)的elf文件。我想把它转换成汇编代码。我有一个函数的基址和指令的偏移量。利用这些信息,我想得到具体的说明。我使用“objdump-b binary-mi386-D file.elf”从elf文件中获取汇编代码,但它正在生成4GB的数据。我也提到过这一点,但它对我也不起作用。您可以使用--start address和--stop address选项限制objdump输出 对于仅用于单个函数的过程代码,这些选项的值可以从readelf-s输出中获取,其中包含节中函数的起

我有一个非常大的代码库(内核)的elf文件。我想把它转换成汇编代码。我有一个函数的基址和指令的偏移量。利用这些信息,我想得到具体的说明。我使用“
objdump-b binary-mi386-D file.elf
”从elf文件中获取汇编代码,但它正在生成4GB的数据。我也提到过这一点,但它对我也不起作用。

您可以使用--start address和--stop address选项限制
objdump
输出

对于仅用于单个函数的过程代码,这些选项的值可以从
readelf-s
输出中获取,其中包含节中函数的起始地址和函数的大小,也可以从
readelf-s
输出中获取,其中包含带函数的节的地址:

--start-address=<section_start + function_start>
--stop-address=<section_start + function_start + function_size>
——起始地址=
--住址=
我想把它转换成汇编代码


享受吧

我试过了,但是我得到了这个错误:objdump:--起始地址:错误号码:ffff000081891didn您是否忘了在十六进制值之前添加
0x
?是的。。。添加0x之后,它没有给出错误的数字。。。非常感谢。但是现在。。我仍然没有得到输出。。。这是命令:-objdump-b binary-mi386——开始地址=0xFFFF00008081890——停止地址=0xFFFF00008081BF4 elf_文件,输出为elf_文件:文件格式二进制确保传递正确的——开始地址。请注意,它应该是节的开始地址(函数通常包含在
.text
节中)和该节中函数的偏移量(这是
readelf-s
显示的内容)之和。为什么要标记linux内核?如果您试图查看的是二进制内核,那么应该这样说,并具体说明是哪种格式(因为它通常都是压缩的,因此objdump无法理解)。如果没有,请删除不适用的标签。
gdb -q ./elf_file
(gdb) set height 0    # prevent pagination
(gdb) set logging on  # output will be mirrored in gdb.txt
(gdb) disassemble 0xffff000008081890 0xffff000008081bf5
(gdb) quit