可能的重复项:
在大型C++遗留应用程序中查找"死代码"
我的项目有很多 C 源文件,每个文件都有很多全局函数。 其中许多不再被任何调用者引用。 有没有一种简单的方法来识别哪些函数根本没有被任何人引用?
VC 生成的映射文件似乎很有用。 但我不确定函数名称在映射文件中的确切方式/时间。
您可以使用CCCC(免费,开源),它为您提供了许多有关程序的指标。另一种选择是覆盖性(不是免费的)。
这个问题可能是这个问题的重复:遗留 C/C++ 项目中的死代码检测
地图文件没有任何用处。 如果像其他一样我见过的地图文件,它不会指示符号的位置(如果有的话)已使用 - 仅在定义的位置使用。 您可以做的是运行dumpbin
在您的目标文件上:例如,dumpbin /relocations
将在事实显示每次使用带有可能需要的地址的符号重定位(实际上,具有静态的函数和变量一生)。 然后,使用输出上的常用工具确定您感兴趣的功能是否存在。 (作为某人谁主要在Unix上工作,我已经安装了CygWin并且会使用 grep
. 我不熟悉不同的本地等价物Windows下的Unix工具。
这将是相当简单的(使用Python或一些类似的脚本)language)来编写一个小脚本来解析 dumpbin /symbols
每个目标文件,以获取您定义的所有函数,然后解析dumpbin
/relocations
的输出,为您提供您使用的函数列表,最后做两者的差异。 (Microsoft似乎已经走出了他们的使dumpbin
输出难以使用的方法,但仍然不是那困难;你只需要知道要忽略哪些行。