[英]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 example1
的size of example
大於size of the file example1
的size of example
因為-g標志啟用了調試信息。
運行valgrind時,不需要-g標志。 -g僅在編譯過程中是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.