调试的-g选项,readlf命令,


1. 为什么调试的时候需要在编译选项中加上 '-g' 选项
        默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项,这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决。

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

        加上-g选项以后,gcc在编译时会做以下额外的操作:

           (1)创建符号表,符号表包含了程序中使用的变量名称的列表。
           (2)关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。
2.readlf命令

        readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息。

使用:

    (1)查看共享库的依赖库(NEEDED)和搜索名(SONAME),使用语法为readelf -d
   (2)显示ELF头信息,使用语法为readelf -h

你可能感兴趣的:(Linux)