使用GCC查找无法访问的函数(“死代码”)

时间:2010-11-16 15:00:23

标签: c++ gcc dead-code

嘿伙计们,我一直在寻找一种在(非常)大的C ++项目中找到静态无法访问的函数的方法。我曾尝试使用doxygen和其他静态分析工具,但似乎项目太复杂,无法处理。最后我决定使用GCC工具(g ++,gprof,gcov等)是最安全的选择,虽然我无法弄清楚如何做到这一点。 我认为g ++优化消除了静态无法访问的函数,但我不确定如何获取它消除的函数的名称。

你有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:-1)

gcov正是您要找的。你有问题列出的那个,你没看过吗?