数据库。汇编 makefile 中的标志 -g 不起作用

发布于 2025-01-06 13:03:04 字数 1001 浏览 0 评论 0原文

我想用 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-已弃用

编译和构建

mkdir -p src/. 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)列表

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

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

为什么 ?

I'm want to debugging my application with gdb. I build project with makefile and here you can see the results of the project build:

Rule of compile

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

Where

build_flags := -O0 -g -DEBUG

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

Compilation and building

mkdir -p src/. src/Object

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

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

g++ -o ../../bin/myApp_debuq src/./main.o src/Object/Object.o -s -pipe
make: Leaving directory `{project_name}/obj/debug'

I was removed the unnecessary and redundant information.
There you can see a lot of information about building and also you can see flag -g when source file are compiling.
After there I want to debug and I see

(gdb) file myApp_debuq

Reading symbols from {project}/bin/myApp_debuq...(no debugging symbols found)...done.

(gdb) list

No symbol table is loaded. Use the "file" command.

How I know, this message telling me that there is no debug information.

Why ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木緿 2025-01-13 13:03:04

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

Don't strip the debug symbols from the executable! Remove the -s from the link command.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文