簡體   English   中英

何時對GCC使用-g標志

[英]When to use the -g flag to GCC

我試圖迫使ValGrind告訴我程序有什么問題。 Internet上的每一份文檔都說您必須向GCC提供-g選項,但是沒有一個文檔說明您是在編譯時還是在鏈接時 (或兩者同時)使用此標志。 那是什么?

GNU ld文檔說-g將被忽略,因此傳遞它沒有多大意義。 通常,您將-g傳遞給gcc (它實際上是整個編譯過程的前端,而不僅僅是編譯器),它將由它來處理。

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 example1size of example大於size of the file example1size of example因為-g標志啟用了調試信息。

運行valgrind時,不需要-g標志。 -g僅在編譯過程中是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM