调试时在编译选项中添加-g以及readelf命令的用法

用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。

readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示哪些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。这个程序和objdump提供的功能相似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。运行readelf时,除了-v和-H之外,其他的选项必须有一个被指定。

命令参数:<1>-h或者--file-header。显示在elf文件头里包含的所有信息。

                 <2>-l  显示程序头表信息, 包括有几个段,每个段的属性,以及每个段中包含有哪几个节

                 <3>-S  显示节区表内所有的信息,包括每个节的属性

                 <4>-h 显示所有头的信息,包括elf文件头,程序头和节头,即“-l,-h,-S”的组合。

                 <5>-s 显示符号表的信息,包含静态符号表和动态符号表。如果指关心动态符号表,可以直接用“-d”。

                 <6>-r 显示所有定位入口的信息。

猜你喜欢

转载自blog.csdn.net/zy20150613/article/details/79822037