-g
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -g | ✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
生成调试信息以供符号调试器使用,并使程序状态可供调试会话在所选源位置使用。
程序状态是指程序执行过程中某些时刻用户变量的值。
可以使用不同的 -g 级别来平衡调试功能和编译器优化。 更高的 -g 级别以运行时或可能的编译时性能为代价提供更完整的调试支持,而更低的 -g 级别以调试会话中的某些功能为代价提供更高的运行时性能。
在 -O2 优化级别生效时,完全支持调试功能。
当高于 -O2 的优化级别生效时,调试功能将受限。
语法
缺省值
如果未指定 -g ,那么 -g0 将生效,这意味着编译器不会生成任何调试信息或保留程序状态。
如果指定了 -g ,那么缺省值如下所示:
- 如果未启用优化 (-qnoopt) ,那么编译器将生成有关行号,源文件名称和变量的调试信息。 您可以在调试器中修改
这些变量的值。
这也是 -g9 下的行为。
- 当 -O2 优化级别生效时, -g 等同于 -g2。
参数
- -g0
- 不生成调试信息。 不会保留程序 状态。
- -g1
- 生成有关行号和源文件名称的最小只读调试信息。 不会保留程序 状态。 此选项等同于 -qlinedebug。
- -g2
- 生成有关行号、源文件名称和变量的只读调试信息。
当 -O2 或更高优化级别生效时,不会保留程序状态。
-g3, -g4- 生成有关行号、源文件名称和变量的只读调试信息。当 -O2 优化级别生效时:
- 不会保留程序 状态。
- 函数 参数值在每个 函数开头可供调试器使用。
- -g5, -g6, -g7
- 生成有关行号、源文件名称和变量的只读调试信息。当 -O2 优化级别生效时:
- 程序状态可用于调试器的
if构造,循环构造, 函数 定义和 函数 调用。 有关详细信息,请参阅 使用情况。 - 函数 参数值在每个 函数开头可供调试器使用。
- 程序状态可用于调试器的
- -g8
- 生成有关行号、源文件名称和变量的只读调试信息。当 -O2 优化级别生效时:
- 在每个可执行语句开头,调试器可以获得程序状态。
- 函数 参数值在每个 函数开头可供调试器使用。
- -g9
- 生成有关行号、源文件名称和变量的调试信息。 您可以在调试器中修改
这些变量的值。当 -O2 优化级别生效时:
- 在每个可执行语句开头,调试器可以获得程序状态。
- 函数 参数值在每个 函数开头可供调试器使用。

使用量

未启用优化时,如果指定 -g2 或更高级别,那么调试信息始终可用。 当 -O2 优化级别生效时,如果指定 -g5 或更高级别,那么调试信息在所选源位置可用。
当您使用 -O2指定 -g8 或 -g9 时,调试信息在具有可执行语句的每个源行处都可用。
使用 -O2指定 -g5, -g6或 -g7 时,调试信息可用于以下语言构造:
if构造调试信息在每个
if语句的开头 (即指定了if关键字的行) 提供。 它在if构造之后的下一个可执行语句开始时也可用。- 循环构造
调试信息在每个
do,for或while语句的开头提供,即在指定do,for或while关键字的行处提供。 它在do,for或while构造之后的下一个可执行语句开始时也可用。 - 函数 定义
调试信息在 function主体中的第一个可执行语句处提供。
- 函数 调用
调试信息在调用用户定义的 function 的每个语句的开头都可用。 它在包含 function 调用的语句之后的下一个可执行语句的开头也可用。


未启用优化时,如果指定 -g2,那么调试信息始终可用。

示例
使用以下命令来编译
myprogram.c 并生成名为 testing 的可执行程序以进行调试:xlc myprogram.c -o testing -g 以下命令将特定 -g 级别与 -O2 配合使用,以编译
myprogram.c 并生成调试信息:xlc myprogram.c -O2 -g8 