本文共 2674 字,大约阅读时间需要 8 分钟。
常用选项:
1.-b bfdname 指定目标码格式
2.—disassemble或者-d 反汇编可执行段3.—dissassemble-all或者-D 反汇编所有段4.-EB,-EL指定字节序5.—file-headers或者-f 显示文件的整体头部摘要信息6.—section-headers,--headers或者-h 显示目标文件中各个段的头部摘要信息7.—info 或者-I 显示支持的目标文件格式和CPU架构8.—section=name或者-j name显示指定section 的信息9.—architecture=machine或者-m machine 指定反汇编目标文件时使用的架构 1. 修改源代码的顶层 Makefile CC =$(CROSSCOM_PILE)gcc --> CC =$(CROSSCOM_PILE)gcc -g 使成生的vmlinux中含有debug信息2. 所有生成.o的rule中再加一条 CC -E -dD -C $< > /preprocessing/$(shell pwd)/$< 生成预处理文件从这个文件里面能很容易找到c源文件的宏定义3. objdump -h vmlinux > vmlinux.txt 显示 linux 内核段信息,如段的开始虚拟地址,段的长度4. objdump -S -l -z vmlinux > vmlinux.txt 反汇编vmlinux到vmlinux.txt,vmlinux.txt含有汇编和c源文件的混合代码,看起来很方便。而且能一步步看linux怎么一步步运行的。5. objdump -S -l -z -j xxxx(section name) vmlinux > vmlinux.txt 反汇编linux内核段xxxx到文件vmlinux.txt中。6. objdump -x vmlinux > x.txt vmliux中所有段的头信息,其中包口vmlinux的入口地址等7. objdump --debugging vmlinux > debugging.txt 很多有用的debug信息,如函数名,结构体定义等 我觉的用根据以上信息,ultraedit看很方便。尤其在vmlinux.txt中选中文件名, 用ultraedit右键的open能马上打开文件,很方便。
objdump -j .text -S vmlinux > vmlinux.txt-S尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。 -l用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。 [-l | --line-numbers] [-S | --source] 混合汇编[-z | --disassemble-zeroes][-j section | --section=section][--prefix-addresses] |
版权声明:本文为博主原创文章,未经博主允许不得转载。