gdb RelWithDebInfo 调试信息分离 2025-10-02

内容分享2小时前发布
0 0 0

-O 2/3 -g -DNDEBUG

release 是开启优化无调试信息
debug 是不进行优化,包含调试信息
RelWithDebInfo 提供优化和调试信息

发布的时候需要将调试信息和可执行文件分离

使用步骤
1. 编译的选项即使用优化,也使用 -g 要调试信息
2. 使用objcopy将可执行文件中的调试信息提取出来,另存为一个新文件。

objcopy --only-keep-debug ./src/redis-server redis-server.debug

(将redis-server中的调试信息转存到redis-server.debug中)(这一步是不会对redis-server做任何的改变的)
3. 将可执行文件中的调试信息去掉,(这里使用strip命令,objcopy也是可以的)

strip -g redis-server

4.使用 `objcopy`添加调试链接(它在被“瘦身”的可执行文件中添加一个“注释”(即**调试链接**),告知GDB:“我的调试信息在 `redis-server.debug`这个文件里”)

objcopy --add-gnu-debuglink=redis-server.debug redis-server

(通过这一步使得redis-serverredis-server.debug就通过这个链接关联起来了,我们可以想平常使用gdb调试一样调试了)
(这一步实则是向里面添加的调试信息的链接和crc校验和)
(CRC校验和目的是为了验证调试信息和可执行文件是否是同一个版本的)

可以使用gdb像之前一个进行debug这个“瘦身”(分离了调试信息)的可执行文件了

gdb ./redis-server

© 版权声明

相关文章

暂无评论

none
暂无评论...