我正在寻找一种在(非常)大型 C++ 项目中查找静态无法访问的函数的方法。我曾尝试使用 doxygen 和此处建议的其他静态分析工具,但似乎该项目太复杂,他们无法处理。最后我决定使用 GCC 工具(g++、gprof、gcov 等)是最安全的选择,尽管我不知道该怎么做。
我认为 g++ 优化消除了静态无法访问的函数,但我不确定如何获取它消除的函数的名称。
你有什么建议吗?
死代码优化通常由链接器完成 - 编译器没有概述。然而,编译器可能已经消除了未使用的static
功能(因为它们具有内部链接)。
因此,您不应该查看 GCC 选项,而应该查看 ld 选项。看来你想要--print-gc-sections
。但是,请注意,您可能希望 GCC 将每个函数放在自己的部分中,-ffunction-sections
。默认情况下,GCC 会将所有函数放在同一节中,而 ld 不够聪明,无法消除未使用的函数 - 它只能消除未使用的节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)