gcc -g
调试选项(DEBUGGING OPTION)GNU CC拥有许多特别选项,既可以调试用户的程序,也可以对GCC排错:
-g
以操作系统的本地格式(stabs, COFF, XCOFF,或DWARF).产生调试信息. GDB能够使用这些调试信息. 在大多数使用stabs格式的系统上, `-g'选项启动只有GDB才使用的额外调试信息;这些信息使GDB 调试效果更好,但是有可能导致其他调试器崩溃,或拒绝读入程序.如果你确定要控制是否生成额外的信息, 使用`-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+',或`-gdwarf' (见下文).
和大多数C编译器不同, GNU CC允许结合使用`-g'和`-O'选项.优化的代码偶尔制造 一些惊异的结果:某些声明过的变量根本不存在;控制流程直接跑到没有预料到的地方;某些语句因为计算结果是常量或已经确定而 没有执行;某些语句在其他地方执行,因为他们被移到循环外面了. 然而它证明了调试优化的输出是可能的.对可能含有错误的程序使用优化器是合理的. 如果GNU CC支持输出多种调试信息,下面的选项则非常有用.
-ggdb 以本地格式(如果支持)输出调试信息,尽可能包括GDB扩展.
-gstabs 以stabs格式(如果支持)输出调试信息,不包括GDB扩展.这是大多数BSD系统上DBX使用的格式. -gstabs+ 以stabs格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序
. -gcoff 以COFF格式(如果支持)输出调试信息.这是在System V第四版以前的大多数System V系统上SDB使用的 格式.
-gxcoff 以XCOFF格式(如果支持)输出调试信息.这是IBM RS/6000系统上DBX调试器使用的格式.
-gxcoff+ 以XCOFF格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序.
-gdwarf 以DWARF格式(如果支持)输出调试信息.这是大多数System V第四版系统上SDB使用的格式. -gdwarf+ 以DWARF格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序.
-glevel -ggdblevel -gstabslevel -gcofflevel -gxcofflevel -gdwarflevel 请求生成调试信息,同时用level指出需要多少信息.默认的level值是2.
Level 1输出最少量的信息,仅够在不打算调试的程序段内backtrace.包括函数和外部变量的描述,但是 没有局部变量和行号信息.
Level 3包含更多的信息,如程序中出现的所有宏定义.当使用`-g3'选项的时候,某些调试器支持 宏扩展.
-g
以操作系统的本地格式(stabs, COFF, XCOFF,或DWARF).产生调试信息. GDB能够使用这些调试信息. 在大多数使用stabs格式的系统上, `-g'选项启动只有GDB才使用的额外调试信息;这些信息使GDB 调试效果更好,但是有可能导致其他调试器崩溃,或拒绝读入程序.如果你确定要控制是否生成额外的信息, 使用`-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+',或`-gdwarf' (见下文).
和大多数C编译器不同, GNU CC允许结合使用`-g'和`-O'选项.优化的代码偶尔制造 一些惊异的结果:某些声明过的变量根本不存在;控制流程直接跑到没有预料到的地方;某些语句因为计算结果是常量或已经确定而 没有执行;某些语句在其他地方执行,因为他们被移到循环外面了. 然而它证明了调试优化的输出是可能的.对可能含有错误的程序使用优化器是合理的. 如果GNU CC支持输出多种调试信息,下面的选项则非常有用.
-ggdb 以本地格式(如果支持)输出调试信息,尽可能包括GDB扩展.
-gstabs 以stabs格式(如果支持)输出调试信息,不包括GDB扩展.这是大多数BSD系统上DBX使用的格式. -gstabs+ 以stabs格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序
. -gcoff 以COFF格式(如果支持)输出调试信息.这是在System V第四版以前的大多数System V系统上SDB使用的 格式.
-gxcoff 以XCOFF格式(如果支持)输出调试信息.这是IBM RS/6000系统上DBX调试器使用的格式.
-gxcoff+ 以XCOFF格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序.
-gdwarf 以DWARF格式(如果支持)输出调试信息.这是大多数System V第四版系统上SDB使用的格式. -gdwarf+ 以DWARF格式(如果支持)输出调试信息,使用只有GNU调试器(GDB)理解的GNU扩展.使用这些扩展有可能导致 其他调试器崩溃或拒绝读入程序.
-glevel -ggdblevel -gstabslevel -gcofflevel -gxcofflevel -gdwarflevel 请求生成调试信息,同时用level指出需要多少信息.默认的level值是2.
Level 1输出最少量的信息,仅够在不打算调试的程序段内backtrace.包括函数和外部变量的描述,但是 没有局部变量和行号信息.
Level 3包含更多的信息,如程序中出现的所有宏定义.当使用`-g3'选项的时候,某些调试器支持 宏扩展.
相关问题:
1、linux系统下-Wall和-Werror的区别是什么?
-Wall 打开gcc的所有警告
-Werror,它要求gcc将所有的警告当成错误进行处理
aa