gdb调试的时候为什么编译选项中添加 -g

原因:

  • 默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项,这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决
#gcc -g test.c -o test
  • “-g” 标志是对程序进行调试性编译时常用的选项,我们需要给每一个需要调试的源文件都加上这个选项,它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。

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

  • 创建符号表,符号表包含了程序中使用的变量名称的列表。

  • 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

参考原文:https://blog.csdn.net/tanrui519521/article/details/79867221

你可能感兴趣的:(操作系统)