-g 以 操作系统的本地格式 (stabs, COFF, XCOFF, 或 DWARF). 产生调试信息. GDB能够使用这些调试信息.
在大多数使用 stabs 格式的系统 上, `-g' 选项启动只有 GDB 才使用的额外调试信息; 这些信息使GDB调试效果更好,但是有可能导致其他调试器崩溃, 或拒绝读入程序. 如果你确定要控制是否生成额外的信息, 使用`-gstabs+', `-gstabs', `-gx‐','coff+', `-gxcoff', `-gdwarf+', 或 `-gdwarf' .
和大多数 C 编译器不同, GNU CC 允许结合使用 `-g' 和 `-O' 选项. 优化的代码偶尔制造 一些惊异的结果: 某些声明过的变量根本不存在; 控制流程直接跑到没有预料到的地方; 某些语句因为计算结果是常量或已经确定而没有 执行; 某些语句在其他地方执行, 因为他们被移到循环外面了.
然而它证明了调试优化的输出是可能的. 对可能含有错误的程序使用优化器是合理的.
可以通过查询手册了解更多关于 gcc -g 的选项,输入命令(man gcc)
readelf 一般用于查看 ELF 格式的文件信息。
语法:readelf (选项)(参数:文件),除了-v和-H之外,其它的选项必须有一个被指定参数。
-a 相当于指定-文件头、-程序头、-节、-符号、-重定位、-动态、-注释和-版本信息。
1)选项 -h(elf header),显示elf文件开始的文件头信息;
2)选项 -l(program headers),segments 显示程序头(段头)信息;
<