Linux
Linux GCC 編譯器選項
我最近開始使用 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;
如您所見,現在有關於錯誤線的資訊。