c++ - 如何获取 GDB 的行号?

标签 c++ 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

没有成功;它拒绝显示任何内容。

这是我的生成文件:

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)

最佳答案

编译时需要包含调试符号。例如,如果您使用的是 gcc,请添加标志 -ggdb

关于c++ - 如何获取 GDB 的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8654469/

相关文章:

c++ - 如何将 std::future<T> 转换为 std::future<void>?

c++ - 已加载 Dll 的完整路径?

c++ - 如何对两个数组进行排序,同时保持它们连接到同一元素?

c++ - CPP控制台,关闭时,打开另一个cpp文件

assembly - 0x8($rsp) 的含义

c++ - 无法中断 gdb mingw 中的函数名称

c# - 通过数据流在C#中接收数据并通过boost :asio http server example读取数据

java - 使用 pmap 和 gdb 查找 native 内存泄漏

assembly - 如何使用 LLDB 修改内存内容?

c - 在其他进程启动的进程中设置断点