【问题标题】:Gdb. Doesn't work flag -g in the assembly makefile数据库。程序集生成文件中的标志 -g 不起作用
【发布时间】:2025-12-28 09:50:16
【问题描述】:

我想用 gdb 调试我的应用程序。我使用 makefile 构建项目,在这里您可以看到项目构建的结果:

编译规则

%.o : %.cpp
g++ -o $@ -c $< $(COMPILE_FLAGS) $(build_flags) $(addprefix -I , $(INCLUDE_DIRS))

在哪里

build_flags := -O0 -g -DEBUG

COMPILE_FLAGS := -Wall -MD -pipe -Wno-deprecated

编译构建

mkdir -p src/.源/对象

g++ -o src/./main.o -c ../../src/./main.cpp -Wall -MD -pipe -Wno-deprecated -O0 -g -DEBUG -I ../. ./包括

g++ -o src/Object/Object.o -c ../../src/Object/Object.cpp -Wall -MD -pipe -Wno-deprecated -O0 -g -DEBUG -I ../. ./包括

g++ -o ../../bin/myApp_debuq src/./main.o src/Object/Object.o -s -pipe
make: 离开目录`{project_name}/obj/debug'

我被删除了不必要和多余的信息。 在那里你可以看到很多关于构建的信息,你还可以在源文件编译时看到标志 -g。 在那里我想调试,我看到了

(gdb) 文件 myApp_debuq

正在从 {project}/bin/myApp_debuq...读取符号...(未找到调试符号)...完成。

(gdb) 列表

没有加载符号表。使用“文件”命令。

我怎么知道,这条消息告诉我没有调试信息。

为什么?

【问题讨论】:

    标签: c++ gdb g++


    【解决方案1】:

    不要从可执行文件中删除调试符号!从链接命令中删除-s

    【讨论】: