簡體   English   中英

即使使用-g標志進行編譯,gdb中也沒有調試符號

[英]No debugging symbols in gdb even when compiling with -g flag

我正在嘗試使用調試符號編譯我的程序,以便在gdb中使用。 我已經將-g標志添加到我的makefile中,但是當我在gdb中加載程序時,我仍然得到“從...中讀取符號(沒有找到調試符號)”。 怎么了??

這是我的makefile的一個精簡的例子,它應該有相關的位:

CPP = g++
CFLAGS = -c -g -Wall

$(BIN): $(OBJ)
 $(CPP) $(LDFLAGS) $(OBJ) -o $(BIN) $(LIBS)

<test.o>: <test.cpp>
 $(CPP) $(CFLAGS) <test.cpp> -o <test.o>

如果你想看到整個事情,你可以去這里,雖然我不認為這是必要的:

http://pastebin.com/vGNjy0ga

雜項說明..我在Windows上使用MinGW進行編譯,我將SFML和OpenGL作為依賴項。

不,在我的makefile中找不到-s標志。

啊。 我非常抱歉。 事實證明我的makefile中的“clean:”部分已被破壞。 因此當我使用make clean時沒有任何事情發生。 手動刪除.o文件修復了問題。 旗幟現在完美運作。 感謝所有發布的人! 現在可以刪除。

使用我在一些舊的F77代碼上繼承的makefile時遇到了同樣的問題。 我嘗試了所有人們推薦的標志(-g -ggdb ......等)解決方案運行make clean如果你沒有那個或者知道它意味着什么,基本上刪除所有已編譯的(.o)文件。

makefile不知道要重新編譯,因為只更改了標志,所以當我想到它時,我實際上並沒有使用-g或-ggdb進行編譯。 希望這有助於某人!

試着替換

$(BIN): $(OBJ)
 $(CPP) $(LDFLAGS) $(OBJ) -o $(BIN) $(LIBS)

$(BIN): $(OBJ)
 $(CPP) $(CFLAGS) -o $(BIN) $(OBJ) $(LDFLAGS) $(LIBS)

(編輯)注意:-c選項不適用於可執行文件

我不確定,但我認為即使在鏈接時你也需要-g。

我對Mingw沒有多少經驗,但嘗試用-ggdb替換-g。 這可以解決您的問題。 根據gcc手冊頁

生成供GDB使用的調試信息。 這意味着使用最具表現力的格式(DWARF 2,stabs或本機格式,如果這兩種格式都不受支持),包括GDB擴展(如果可能的話)。

我認為在將對象鏈接到二進制代碼時需要-g

CPP = g++
CFLAGS = -g -Wall

$(BIN): $(OBJ)
 $(CPP) $(CFLAGS) $(OBJ) -o $(BIN) $(LDFLAGS) $(LIBS)

<test.o>: <test.cpp>
 $(CPP) $(CFLAGS) -c <test.cpp> -o <test.o>

暫無
暫無

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

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