10

我想提高大型项目的构建速度。opt build 使用 -O2 -g 编译。我注意到如果没有 -g,编译会变得更快,大约 10-20%。生成的二进制文件有足够的信息来分析崩溃,除了行号。有没有办法包含行号信息但没有别的?

根据http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html,行号仅在级别 2(即 -g2 或 -g 的默认值)或更高级别生成。但是根据这个http://gcc.gnu.org/wiki/DebugFission,行号只是调试信息的一小部分(1%)。所以对我来说,最好有 -g0 或 -g1 但有行号。这可能吗?

最好的问候,马丁

4

3 回答 3

7

谷歌搜索 Matthieu 提到的 Clang 选项,我找到了一个 gcc 补丁,它可以满足我的需求。它已提交到主干,但两年以来一直处于未决状态。这意味着普通的 GCC 无法做到这一点,但有了这个补丁,它可以使用选项“-gmlt”做到这一点

http://old.nabble.com/-patch--Add-new--gmlt-option-for-min.-debug-info-with-line-tables-%28issue4440072%29-td31482851.html

于 2013-07-28T15:00:28.037 回答
6

你会不会弄错了?我知道Clang支持-gline-tables-only,但据我所知 gcc 不支持;它确实支持-g1,但没有线路信息。

于 2013-07-28T13:44:23.933 回答
0

时间过去了。

GCC 知道包含带有-g1.

您还可以添加另外两个选项以节省更多空间:-g1 -gz -gsplit-dwarf

于 2022-01-20T19:17:40.803 回答