【问题标题】:Adjust Variable Tracking Assignment Length调整可变跟踪分配长度
【发布时间】:2014-06-23 08:59:04
【问题描述】:

在发布版本中,我收到来自 GCC 4.4.7 的以下信息警告。

注意:使用 -fvar-tracking-assignments 超出了变量跟踪大小限制,不使用则重试

我是否超出了变量跟踪分配支持的变量名长度?
如果是这样,有没有办法调整支持的大小?

【问题讨论】:

  • 这似乎发生在 Clang 中;但 Clang 不会产生有用的信息。在 GCC 和 Clang 下使用 Undefined Behavior Sanitizer 时,这种情况似乎更常见。

标签: c++ gcc compiler-options


【解决方案1】:

这只是编译器的一个注释,它的调试信息 特定功能的质量会较低,因为您的功能代码 太大/太复杂,所以变量跟踪达到了哈希表槽的限制。

最大值可能是数百万,可以用一些东西来提高 (如--param=max-vartrack-size=60000000)但你最终可能会得到非常 编译速度慢或编译器可能需要大量内存来计算 调试信息位置列表。

因此,除非您在调试代码时遇到问题,否则请忽略该警告。

【讨论】:

  • 是的,唯一的缺点是文件被编译了两次。仅供参考,在大型单元测试 .cpp 中出现此错误。
  • “因此,除非您在调试代码时遇到问题,否则请忽略该警告...” - 导致构建失败的 CI 超时怎么样?既然我知道一个文件有问题,我应该只使用-fno-var-tracking-assignments吗?
  • @jww CI 超时保护 CI 服务运行的某些东西是否挂起。当构建需要很长时间时,我们可以调整超时时间。
【解决方案2】:

我的警告是:使用-fvar-tracking-assignments,不使用重试

如果你关心它链接两次,你可以设置 -fno-var-tracking-assignments 在 makefile 指令中避免重试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2018-09-28
    • 1970-01-01
    • 2016-08-25
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多