eclipse - 如何计算目标文件中未定义符号的使用?
问题描述
假设我正在“取证”检查其他人编译的目标文件。我没有源代码,也不能依赖调试符号。不过,我可以使用:
objdump -C -t my_object.o \
| sed -r '/\\*UND\\*/!d; s/000+\s+\*UND\*\s+000+ //;' \
| sort
获取它使用的外部符号。
但是,如果我所追求的是每个符号的使用次数呢?有没有办法在不费力地解析反汇编代码的情况下做到这一点?
笔记:
- 一个 GNU 系统(例如 Linux)
- 假设安装了 C++ 软件开发中使用的基本工具。
解决方案
对于函数,您可以查看重定位的数量,例如:
// test.cc:
void foo();
int main() {
foo();
foo();
}
$ c++ -c test.cc
$ objdump -r test.o | grep foo
0000000000000005 R_X86_64_PC32 _Z3foov-0x0000000000000004
000000000000000a R_X86_64_PC32 _Z3foov-0x0000000000000004
这里我们有两个重定位,每个对应一个函数调用。
推荐阅读
- android - 如何在kotlin的onclick函数中从视图中获取参数?
- php - 如何将父构造函数添加到带有参数的子构造函数。我已经尝试过 parent::__construct 但仍然有错误
- php - 我在使用 LARAVEL 将数据保存到数据库时遇到问题
- java - 通过旋转元素生成字符串
- c - 调试错误!在 C 中检测到堆损坏
- linux - 与 Linux Logrotate 混淆
- internet-explorer - .then 是否受 Internet Explorer 支持?
- javascript - 空数组的意外结果
- android - Flutter ListView 到 ListView.builder
- python - 如何使 tkinter 画布多边形透明?