如何使用gcc编译器在C语言项目中查找无效代码

时间:2018-09-27 21:28:33

标签: c gcc dead-code

我需要使用gcc编译器在我的“ C”语言项目(具有多个C文件)中找到无效的代码(未使用的功能)。请让我知道gcc选项来查找无效的代码。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

有关未使用的静态函数,请参见Ed Kinganswer

对于全局函数,您可以尝试以下操作:两次构建项目,一次照常构建,一次使用-ffunction-sections -Wl,--gc-sections进行构建(第一个是编译器标志,第二个是链接器标志)。然后,您可以在生成的二进制文件上运行nm,以获取两次运行的符号列表。链接器将在第二次运行中删除未使用的功能,因此这是您的无效功能列表。

这假定了ELF,binutils链接器等通用目标,并且最终二进制文件未从其符号表中剥离。

答案 1 :(得分:1)

您可以使用GCC编译器选项-Wunused-function来警告您未使用的static函数。我不确定您如何检测未使用的“公共”功能,除了查看未链接的功能的映射文件之外。