【发布时间】:2009-10-28 09:51:49
【问题描述】:
当我在 Gentoo 上构建软件包时。我收到警告说'-ggdb3'标志可以'破坏包。
我还没有找到一个例子来证明这是真的。虽然我曾经发现一些在不同优化设置下崩溃的代码,但这与包含调试符号不同。
能否提供一个代码示例,该代码无需调试符号即可编译,并且不会与它们一起编译(或在运行时以其他方式出错)?
【问题讨论】:
标签: c++ linux debugging gcc gentoo
当我在 Gentoo 上构建软件包时。我收到警告说'-ggdb3'标志可以'破坏包。
我还没有找到一个例子来证明这是真的。虽然我曾经发现一些在不同优化设置下崩溃的代码,但这与包含调试符号不同。
能否提供一个代码示例,该代码无需调试符号即可编译,并且不会与它们一起编译(或在运行时以其他方式出错)?
【问题讨论】:
标签: c++ linux debugging gcc gentoo
在“过去”中,我从 Scratch 系统构建了一个完整的 Linux,并为每个二进制文件进行了调试。当然,安装量要大得多,内存使用量也不太理想,但我从来没有遇到过任何问题,无论是在编译还是后续执行中。
很难证明是否定的,并且不能通过轶事来证明,但是将其作为第二台桌面/玩具服务器运行一年会让我得出结论,这确实不是问题。
我认为你得到的标志是一个标准的警告,如果你设置了未测试的 USE 标志,或者它不是真的要安装的,包将在 Gentoo 中给出。只要你知道标志是什么——在这种情况下,你似乎——并且你没有将它放在任何“关键任务”设置中(即,如果出现问题,你会受到指责)似乎是安全的忽略这些警告。
【讨论】:
我从来没有因为包含调试符号而失败过一次测试(或者更少,包中断)。在处理PPC 时,我只被优化错误所困扰。
但是,您必须考虑要构建的内容。如果要将可执行文件复制到类似 initrd 的文件中,您通常希望将其剥离(或在没有调试符号的情况下编译),尤其是静态链接时。
【讨论】:
有时当你打开调试符号时,它实际上改变了编译器生成的代码,在这种情况下,总是有可能从“正确的代码”变成“不正确的代码”。
我不知道“-ggdb3”启用了哪些特定更改,但也许这就是您被警告的内容。
【讨论】: