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

时间:2011-04-06 14:51:16

标签: c++ debugging gcc symbol-tables core-file

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

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

在不影响我发布的软件的大小或性能的情况下,有没有办法绕过这个(这里是捕获)?它是一个大型应用程序,调试版本的性能可能不被客户接受。我已经看过建立一次(调试)的建议,然后剥离符号表并将其作为发布版本发布,但是我会看到使用该方法的性能损失,不是吗?

有没有人对他们尝试或目前用来解决这个问题的事情提出建议? 谢谢!

1 个答案:

答案 0 :(得分:3)

您可以编译并链接启用的优化,并仍然生成调试符号(-O3 -g),然后提取调试符号。这样你就可以拥有调试符号,但是可以在没有它们的情况下运行,并且你不会有性能损失等等。有关如何执行此操作,请参阅How to generate gcc debug symbol outside the build target?