GCC 11 的静态分析功能将得到增强

在 GCC 10 中,状态跟踪组件存在很多崩溃错误,其中一个大问题是使用唯一 ID 来跟踪符号值和区域,目前修改为使用唯一对象(单例)来表示符号值和区域。另一个大问题是之前的实现中,符号值和区域被用来表示内存区域的符号访问路径到符号值的映射,目前修改为内存中位偏移群集的映射。

GCC 10 中的内存泄漏检测存在很多误报,并且分析器的确切行为因调用而异,由于哈希算法,迭代的顺序将隐式取决于精确的指针值。指针值可能由于地址空间布局随机化而不同,从而导致不同的结果。该部分内容已经重写,新的内存泄漏检测将更少误报,并且分析器的行为在每次运行时都可重现。

同时,该静态分析功能新增了 4 个 -Wanalyzer 前缀的警告,这些警告都对应 C 和 C++ 中已经存在的 -W 警告,但是实现并不相同。

除上述改动以外,静态分析器还有两个正在开发中的新功能:标记 API 和 以 HTML 方式输出结果。前者可以检测泄漏和双重释放,后者是对输出报告可视化的优化,比如 Double-free bug、Signal handler issue、Memory leak。

目前 GCC 11 已经进入最后开发阶段,预计于下个季度发布,并且 -fanalyzer 现在仅支持 C,对 C++ 的支持计划于 GCC 12 中实现。

相关阅读

你可能感兴趣的:(c++,c++,gcc11)