添加gcc -g
选项.表示添加gdb
调试信息.
一般信息格式是dwarf
格式.
这类型的格式会携带一些数据.
readelf -Wwi a.out
...
<c> DW_AT_producer : (indirect string, offset: 0x28): GNU C++ 4.8.5 20150623 (Red Hat 4.8.5-39) -mtune=generic -march=x86-64 -g
<10> DW_AT_language : 4 (C++)
<11> DW_AT_name : (indirect string, offset: 0x72): a.cpp
<15> DW_AT_comp_dir : (indirect string, offset: 0x13): /root/cfile/gdbevent
<19> DW_AT_low_pc : 0x40050d
<21> DW_AT_high_pc : 0x38
<29> DW_AT_stmt_list : 0x0
...
DW_AT_producer
编译信息,记录了编译器版本,处理器流水线类型,以及架构.DW_AT_language
则记录了编译时的文本对应语言.DW_AT_name
则记录了编译时的文件名.gcc filename -o a.out
,name
就对应这个filename
DW_AT_comp_dir
编译时的工作路径,在目录结构复杂的项目中,最终生成的可执行文件的这个值很可能不一样.
不建议编译的时候使用优化编译选项.
-O == -O1
而不是-O0
.