我正试图强迫ValGrind告诉我我的程序有什么问题。互联网上的每一丝文档都说你必须向GCC提供-g
选项,但是没有一个文件说明你是否需要编译时或链接时间(或两者)。那是哪个?
答案 0 :(得分:3)
GNU ld文档说-g
将被忽略,因此传递它没有多大意义。通常,您将-g
传递给gcc
(它实际上是整个编译过程的前端,而不仅仅是编译器),它会处理它。
答案 1 :(得分:0)
GCC提供-g标志来获取调试,所以你编译程序就像 考虑一下example.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仅在编译过程中需要。