相关疑难解决方法(0)

在大型C++遗留应用程序中查找"死代码"

我目前正在开发一个大型和旧的C++应用程序,在我之前有许多开发人员.项目,类和函数中有很多"死代码",任何人都不会使用它们.

有哪些工具可用于C++分析大型代码库以检测和重构死代码?注意:我不是在谈论像gcov这样的测试覆盖率工具.

你如何在项目中找到死代码?

c++ legacy visual-c++

54
推荐指数
2
解决办法
2万
查看次数

检测C中未使用的功能

我正在寻找一种方法来检查我的C项目,编译成ELF,是否有未使用的函数,并找到它们.这是声明的函数,但在我的代码中没有被调用.

解决方案可以是以下之一:

  • 一个实用程序,通过我的.c文件,分析它们
  • 一个实用程序,通过我编译的ELF文件,有符号,静态分析它
  • 一种警告gcc中未使用的函数的方法(和-Wunused-functions不对全局函数执行此操作)

解决方案不能是以下之一:

  • 在编译时删除未使用的函数,而不知道删除了哪些函数
  • 在运行时分析ELF文件,因为并非每个函数都会在每次运行中调用gprof(有些函数需要几天才能调用它们,但在代码流中你可以看到它们最终被调用)
  • 一种实用程序,用于发现函数内部的死代码(即函数返回后的代码),而不是未使用的函数

谢谢

c gcc code-analysis utility dead-code

5
推荐指数
1
解决办法
2165
查看次数

gcc 链接器获取未使用对象的列表

我想在具有许多库的大型 C 应用程序中识别未使用的目标文件。该项目随着时间的推移发展了很多,现在我想搜索不再使用的库,以便我可以从依赖文件中删除它们。gcc 链接器是否可以识别任何未使用的对象?

例如,如果我用 gcc 编译一个应用程序,并且假设没有使用 library2 的任何符号/函数。有没有办法获取有关哪些对象未链接的信息?

gcc library1.o library2.o main.o -o main.elf
Run Code Online (Sandbox Code Playgroud)

我知道 gcc 有编译器和链接器标志来删除未使用的符号:

-fdata-sections -ffunction-sections -Wl,--gc-sections
Run Code Online (Sandbox Code Playgroud)

但是这样我不知道 gcc 删除了哪些对象。如果 gcc 可以选择获取未链接到应用程序的对象列表,那将是完美的。

只是提一下:我需要基于目标文件而不是基于函数/符号!

有谁知道 gcc 的这样一个选项?

c c++ linker gcc

5
推荐指数
1
解决办法
2843
查看次数

列出未使用的符号

我想从一个较大的项目中删除死代码,并希望从未使用的符号开始.反正有没有让链接器列出它已经优化的未使用的符号?我正在使用GNU链接器(LD)和GCC.

如果失败了,任何Binutils(readelf或objdump)都可以执行相同的功能吗?

c c++ linker

4
推荐指数
2
解决办法
2190
查看次数

标签 统计

c ×3

c++ ×3

gcc ×2

linker ×2

code-analysis ×1

dead-code ×1

legacy ×1

utility ×1

visual-c++ ×1