识别 C/C++ 中未使用的函数



可能的重复项:
在大型C++遗留应用程序中查找"死代码"

我的项目有很多 C 源文件,每个文件都有很多全局函数。 其中许多不再被任何调用者引用。 有没有一种简单的方法来识别哪些函数根本没有被任何人引用?

VC 生成的映射文件似乎很有用。 但我不确定函数名称在映射文件中的确切方式/时间。

您可以使用CCCC(免费,开源),它为您提供了许多有关程序的指标。另一种选择是覆盖性(不是免费的)。

这个问题可能是这个问题的重复:遗留 C/C++ 项目中的死代码检测

我认为

地图文件没有任何用处。 如果像其他一样我见过的地图文件,它不会指示符号的位置(如果有的话)已使用 - 仅在定义的位置使用。 您可以做的是运行dumpbin在您的目标文件上:例如,dumpbin /relocations 将在事实显示每次使用带有可能需要的地址的符号重定位(实际上,具有静态的函数和变量一生)。 然后,使用输出上的常用工具确定您感兴趣的功能是否存在。 (作为某人谁主要在Unix上工作,我已经安装了CygWin并且会使用 grep . 我不熟悉不同的本地等价物Windows下的Unix工具。

这将是相当简单的(使用Python或一些类似的脚本)language)来编写一个小脚本来解析 dumpbin /symbols每个目标文件,以获取您定义的所有函数,然后解析dumpbin /relocations的输出,为您提供您使用的函数列表,最后做两者的差异。 (Microsoft似乎已经走出了他们的使dumpbin输出难以使用的方法,但仍然不是那困难;你只需要知道要忽略哪些行。

相关内容

  • 没有找到相关文章

最新更新