2011-12-28 43 views
1

有沒有具體的方法來做到這一點?我在通用目的。當我嘗試在GDB啓動我的程序,例如,我得到這樣的通知:如何獲取GDB的行號?

Reading symbols from /home/amsterdam/Code/c++/opengl_03/bin/opengl_03...(no debugging symbols found)...done. 

這讓我想知道如果我要找到這個特定的文件?

更新

注:我已經嘗試下面的命令:

nm --debug-sym <your_executable> | grep debug

沒有成功;它拒絕顯示任何東西。

這裏是我的Makefile:

BIN = bin/ 
OBJ = obj/ 
TARGET = opengl_03 
DEPS = main.o displayinit.o initializer.o algorithms.o matrix3f.o window.o vertex3.o 
CC = g++ 
CFLAGS = -g -ggdb 
LIBS = -lglut -lGLEW -lGL 
INCLUDEPATH = -L/usr/include/ -L/usr/lib/ -L/usr/lib/x86_64-linux-gnu/ 

$(TARGET) : $(DEPS) 
    $(CC) $(CFLAGS) -o $(BIN)$(TARGET) $(DEPS) $(LIBS) $(INCLUDEPATH) 

displayinit.o : displayinit.cpp displayinit.h 
    $(CC) $(CFLAGS) -c displayinit.cpp $(LIBS) $(INCLUDEPATH) #&& mv displayinit.o $(OBJ)displayinit.o 
initializer.o : initializer.cpp initializer.h 
    $(CC) $(CFLAGS) -c initializer.cpp $(OBJ) $(LIBS) $(INCLUDEPATH) 
algorithms.o : algorithms.cpp algorithms.h 
    $(CC) $(CFLAGS) -c algorithms.cpp $(OBJ) $(LIBS) $(INCLUDEPATH) 
matrix3f.o : matrix3f.cpp matrix3f.h 
    $(CC) $(CFLAGS) -c matrix3f.cpp $(OBJ) $(LIBS) $(INCLUDEPATH) 
vertex3.o : vertex3.cpp vertex3.h 
    $(CC) $(CFLAGS) -c vertex3.cpp $(OBJ) $(LIBS) $(INCLUDEPATH) 
window.o : window.cpp window.h 
    $(CC) $(CFLAGS) $(LIBS) $(INCLUDEPATH) -c window.cpp $(OBJ) 
main.o : main.cpp 
    $(CC) $(CFLAGS) $(LIBS) $(INCLUDEPATH) -c main.cpp $(OBJ) 
+0

也許你在這裏有一些有用的信息:http://stackoverflow.com/questions/3151779/ –

回答

4

您需要包括在編譯時調試符號。例如,如果您使用的是gcc,請添加標記-ggdb

+0

由於某些原因,當我將它包含在我的'$(CFLAGS)'變量中時,它似乎不起作用。你有什麼想法可能是什麼問題? – zeboidlund

+0

你是什麼意思不工作?嘗試使用'-g'標誌 – DrYap

+0

已經使用過。它也不起作用。在這裏,我會在一秒之內發佈我的makefile。 – zeboidlund

3

您需要使用包含gcc -g選項的調試符號進行編譯,並確保您不會剝離您的可執行文件。詳細信息請參見link

---------------------------------------------- ---編輯-------------------------------------------

你的Makefile不好看,你爲什麼不用 boilerplate Makefiles。你可以找到它here,適合我。