c++ - 使用 GCC 查找无法访问的函数 ("dead code")

标签 c++ gcc dead-code

我正在寻找一种在(非常)大的 C++ 项目中查找静态无法访问的函数的方法。我曾尝试使用 doxygen 和此处建议的其他静态分析工具,但似乎该项目太复杂了,他们无法处理。最后我决定使用 GCC 工具(g++、gprof、gcov 等)是最安全的选择,尽管我不知道该怎么做。

我认为 g++ 优化消除了静态无法访问的函数,但我不确定如何获取它消除的函数的名称。

你有什么建议吗?

最佳答案

死代码优化通常由链接器完成——编译器没有概览。但是,编译器可能已经删除了未使用的 static 函数(因为它们具有内部链接)。

因此,您不应该查看 GCC 选项,而应该查看 ld 选项。您似乎需要 --print-gc-sections。但是,请注意,您可能希望 GCC 将每个函数放在其自己的部分 -ffunction-sections 中。默认情况下,GCC 会将所有函数放在同一个部分,而 ld 不够智能,无法消除未使用的函数——它只能消除未使用的部分。

关于c++ - 使用 GCC 查找无法访问的函数 ("dead code"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195494/

相关文章:

c++ - 如何逐行读取文件内容

c++ - 递归 Finbonacci 优化

c++ - 使用 minizip 删除和修改 zip 文件

c++ - 在 Qt C++ 上运行 dlib

c++ - std::bind 和 boost::bind 与多态性的区别

c - C 数据类型 REAL 仅在 GCC 中可用吗?

c - 如何解决 C : 'can' t find a register in class 'GENERAL_REGS' while reloading 'asm' ' 中的内联汇编错误

rust - 调试打印结构时 Rust 中的 dead_code 警告

git - 正确的版本控制死胡同

java - 在总是抛出方法之后如何检测死代码?