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

ndt*_*k07 3 c++ debugging gcc symbol-tables core-file

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

我的问题是(据我所知)不能保证调试和发布版本是相同的——所以当我启动 gdb 并指向我的调试可执行文件时,来自该领域的核心文件可能看起来像垃圾。

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

有没有人对他们尝试过或目前使用的解决此问题的方法提出建议?谢谢!

Dar*_*ust 5

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