调试已发布软件的 c++ 核心文件

Debugging c++ core files for released software

本文关键字:c++ 核心 文件 软件 布软件 调试      更新时间:2023-10-16

我正在尝试找到一种方法来调试从我的软件的已发布版本(使用 gcc 编译的 c++ 代码)发送给我的核心文件。理想情况下,我希望能够部署发布版本,并保留调试版本以用于调试,所以我有符号表等。

我的问题是(据我了解)调试和发布版本不能保证相同 - 因此当我启动 gdb 并指向我的调试可执行文件时,来自现场的核心文件可能看起来像垃圾。

有没有办法在不影响我发布的软件的大小或性能的情况下解决这个问题(这就是问题所在)?这是一个大型应用程序,客户可能无法接受调试版本的性能。我已经查看了构建一次(调试)的建议,然后剥离符号表并将其作为发布版本发布,但我会看到这种方法对性能的影响,不是吗?

没有人对他们已经尝试或目前正在使用的东西有解决这个问题的建议?谢谢!

您可以在启用优化的情况下进行编译和链接,但仍会生成调试符号 ( -O3 -g ),然后提取调试符号。这样,您将拥有调试符号,但可以在没有它们的情况下发布,并且您不会受到性能损失或其他原因。请参阅如何在构建目标之外生成 gcc 调试符号?关于如何做到这一点。