预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共35页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

OBJ文件格式分析工具:objdump,nm,ar 前言如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump,nm,ar。当然,本文不可能非常详细的说明它们的使用方法和功能。如果你觉得本文不够清楚,你可以使用:man.我的计划只是想让更多的人了解这些工具,以后在今后的编程过程中能有所帮助。开始 objdump文件命令功能强的惊人。能实现上述两个命令(ar,nm)的很多功能。它主要是查看对象文件的内容信息。 常用法: objdump-hfile<.o,.a,.out>//查看对象文件所有的节sections.例如:#objdump-hlibtest1.olibtest1.o:fileformatelf32-i386Sections:IdxNameSizeVMALMAFileoffAlgn0.text000000140000000000000000000000342**2CONTENTS,ALLOC,LOAD,RELOC,READONLY,CODE1.data000000000000000000000000000000482**2CONTENTS,ALLOC,LOAD,DATA2.bss000000000000000000000000000000482**2ALLOC3.rodata0000000e0000000000000000000000482**0CONTENTS,ALLOC,LOAD,READONLY,DATA4.comment0000001f0000000000000000000000562**0CONTENTS,READONLY5.note.GNU-stack000000000000000000000000000000752**0CONTENTS,READONLY objdump-t查看对象文件所有的符号列表,相当于nm-sobjfilename,如:#objdump-tlibtest1.olibtest1.o:fileformatelf32-i386SYMBOLTABLE:00000000ldf*ABS*00000000libtest1.c00000000ld.text00000000.text00000000ld.data00000000.data00000000ld.bss00000000.bss00000000ld.rodata00000000.rodata00000000ld.note.GNU-stack00000000.note.GNU-stack00000000ld.comment00000000.comment00000000gF.text00000014print_test100000000*UND*00000000puts 更多信息请查看选项:--archive-headers-a显示档案库的成员信息,与artv类似objdump-alibpcap.a和ar-tvlibpcap.a显示结果比较比较显然这个选项没有什么意思。--adjust-vma=offsetWhendumpinginformation,firstaddoffsettoallthesectionaddresses.Thisisusefulifthesec-tionaddressesdonotcorrespondtothesymboltable,whichcanhappenwhenputtingsectionsatparticularaddresseswhenusingaformatwhichcannotrepresentsectionaddresses,suchasa.out.-bbfdname--target=bfdname指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如:objdump-boasys-mvax-hfu.o显示fu.o的头部摘要信息,明确指出该文件是Vax系统下用Oasys编译器生成的目标文件。objdump-i将给出这里可以指定的目标码格式列表--demangle-C将底层的符号名解码成用户级名字,除了去掉所有开头的下划线之外,还使得C++函数名以可理解的方式显示出来。--debugging显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。--disassemble-d反汇编那些应该还有指令机器码的section--disassemble-all-D与-d类似,但反汇编所有section--prefix-addresses反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。显示效果并不理想,但可能会用到其中的某些显示,自己可以对比。-