Linux

Linux GCC 編譯器選項

  • February 4, 2013

我最近開始使用 Linux 作為程式工具。在我的書中,我看到 GCC 與 2 個選項一起使用:-g-o. 現在,我知道這-o是設置文件名,但目的是-g什麼?我認為它可能與調試有關,但沒有-g參數編譯的程序也是可調試的。那是什麼?

引用手冊:Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information. . 我並不是要成為 RTFM 人,但在這種情況下,閱讀 -g 上的手冊部分將回答您的問題。根據-o,你是對的。

-g 選項允許使用 GDB 可以使用的額外調試資訊。以下是 C 程式碼範例:

int main() {
   int x = 1/0;    
}

讓我們在沒有 -g 選項的情況下編譯它並查看 gdb 輸出:

$ gcc test.c -o test
test.c: In function ‘main’:
test.c:2:11: warning: division by zero [-Wdiv-by-zero]
$ gdb -q ./test
Reading symbols from /home/mariusz/Dokumenty/Projekty/Testy/test...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/mariusz/Dokumenty/Projekty/Testy/test 

Program received signal SIGFPE, Arithmetic exception.
0x080483cb in main ()

現在使用 -g 選項:

$ gcc -g test.c -o test
test.c: In function ‘main’:
test.c:2:11: warning: division by zero [-Wdiv-by-zero]
$ gdb -q ./test
Reading symbols from /home/mariusz/Dokumenty/Projekty/Testy/test...done.
(gdb) run
Starting program: /home/mariusz/Dokumenty/Projekty/Testy/test 

Program received signal SIGFPE, Arithmetic exception.
0x080483cb in main () at test.c:2
2       int x = 1/0;    

如您所見,現在有關於錯誤線的資訊。

引用自:https://unix.stackexchange.com/questions/63691