我試圖使用GDB和KDevelop的調試下,Knoppix的虛擬機控制檯應用程序。 KDevelop的和GDB別在我的斷點打破。我懷疑這是因爲他們沒有調試符號。如何使用Makefile for C生成調試符號? [Linux的]
如果我是正確的怎麼辦,我需要改變我的Makefile中創建這些。也許問題在別的地方?
問候, 林依晨
我試圖使用GDB和KDevelop的調試下,Knoppix的虛擬機控制檯應用程序。 KDevelop的和GDB別在我的斷點打破。我懷疑這是因爲他們沒有調試符號。如何使用Makefile for C生成調試符號? [Linux的]
如果我是正確的怎麼辦,我需要改變我的Makefile中創建這些。也許問題在別的地方?
問候, 林依晨
在發送到編譯器和鏈接標誌-g
。它的默認變量分別爲CFLAGS
和LDFLAGS
。
第二步:排除標誌-s
(-s
意味着條)
如果您能夠看到源和設置的斷點,那麼你可能有調試建立符號。但是,通常的順序是:
gcc -g -o (outputname) (source files...)
gdb outputname
給出關於您在做什麼以及您看到什麼消息的更多細節,我們可以更具體。
完整的例子是:
CFLAGS =-g
all: program.o
gcc -o program program.o
這裏的CFLAGS
應用到編譯器和鏈接兩者。
的「-g」選項,只需要給予通過CFLAGS宏的編譯器。沒有必要在LDFLAGS宏中使用它。 – 2009-12-21 03:12:53
貨物邪教知識,我猜。在某個時候,我使用了一個鏈接器,它必須告訴*不*丟掉調試符號... – dmckee 2009-12-21 03:54:00