何时将-g标志用于GCC
When to use the -g flag to GCC
我正在试图强迫瓦尔格林德告诉我我的程序有什么问题。互联网面对的每条文档丝都说您必须向GCC提供-g
选项,但没有一个文档说您是否需要此标志,是否需要此标志(或两者)。那是哪个??
GNU LD文档说-g
将被忽略,因此通过它没有多大意义。通常,您将-g
传递给gcc
(这确实是整个编译过程的前端,而不仅仅是编译器的前端),它将照顾好它。
gcc提供-g标志以获取调试,因此您会像考虑一个示例的代码。C喜欢:
#include <stdio.h>
/* Warning: This program is wrong on purpose. */
int main()
{
int age = 10;
int height;
printf("I am %d years old.n");
printf("I am %d inches tall.n", height);
return 0;
}
默认情况下,如果您使用make example
编译它将触发命令
cc example.c -o example
现在您像
一样运行命令cc -g example.c -o example1
然后您会发现size of the file example1
大于size of example
因为-g标志启用了调试信息。
不需要运行valgrind是-g标志。-g仅在汇编过程中需要。
相关文章:
- 为什么我的 SFINAE 表达式不再适用于 GCC 8.2?
- 适用于 gcc 4.8 的任何正则表达式库
- 流输入运算符导致分段错误与 clang 但适用于 gcc
- enable_if的模板专用化在 Clang 中失败,适用于 GCC
- 函数指针数组的类模板参数推导适用于 clang,但不适用于 gcc
- 可变参数模板作为模板参数:演绎适用于 GCC,但不适用于 Clang
- 何时将-g标志用于GCC
- 从Visual Studio解决方案生成生成生成文件(用于GCC)
- -m32 选项不适用于 gcc,但适用于 g++
- 库与 Clang 合作,但不适用于 GCC
- 即使启用了 C++11,静态成员初始化也不适用于 GCC
- 为什么void_t<>检测习惯用语不适用于 gcc-4.9?
- 宏调用中的 #ifdef 适用于 GCC,但不适用于 MSVC
- 静态表生成适用于 GCC,但不适用于 clang;被叮当窃听
- 用于提升program_options的自定义验证器不适用于 GCC,适用于 MSVC
- 模板的类型定义包括char[][] - 适用于VS2008,但不适用于gcc
- 模板专用化适用于 gcc,但不适用于 Visual Studio 10
- c ++ 11 参数包在 Apple LLVM 7.0.0 中存在错误行为,但适用于 GCC-5.1
- 此代码有效吗?适用于 gcc,不要与 clang 合作
- 使用enable_if选择特征-适用于clang,但不适用于gcc