gpt4 book ai didi

debugging - GCC 相当于 PDB

转载 作者:行者123 更新时间:2023-12-02 22:10:46 26 4
gpt4 key购买 nike

我有一个程序,打算分发给最终用户,并希望从他们那里收到崩溃报告。如果我使用 MSVC,我会生成小型转储并将其发送给我,然后使用相应的 PDB 检查它们,至少获得有用的堆栈跟踪。

使用 GCC 执行此操作相当于什么?我可以生成堆栈跟踪,但如果我希望它有用,则需要将调试符号编译到可执行文件中(使用 -g)。显然,这对于发布分发来说是 Not Acceptable ,因为可执行文件的大小可能会大大增加。

我用谷歌搜索了一下,发现 objcopy 能够将调试符号分离到单独的文件中,但该页面暗示我仍然需要在发布可执行文件旁边提供调试符号,这显然也是 Not Acceptable 。

最佳答案

好的想法是,使用 -g 进行编译以添加调试符号,但不会减慢程序速度,即。大多数程序都会执行-g -O2,然后您可以使用objdump分隔调试符号。之后,您可以剥离您的发布版本,这样它就不会包含任何调试符号。

更新:最近的 gdb 支持单独的调试文件,请参阅 https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html

例如,你可以这样做

objcopy --only-keep-debug prog prog.debug
strip prog

现在您的prog将不会有任何调试符号。但您可以使用 proc.debug 文件在 gdb 中对其进行调试。

关于debugging - GCC 相当于 PDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com