0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

readelf,nm, objdump工具使用的用法和总结

如意 来源:CSDN 作者:CaspianSea 2020-06-23 09:34 次阅读

有时候需要去检查哪些代码调用了某些接口,但是经常发生的问题是,某些模块,实际上看不到代码,只能看到库文件。这种情况下,可借助GNU工具来检查。

先写个简单的测试代码:

$ cat PCString.h

#ifndef __PCSTRING_H__

#define __PCSTRING_H__

class PCString

{

public

static bool Copy(const char *from, char *to, int size);

};

#endif //__PCSTRING_H__

$ cat PCString.cpp

#include “PCString.h”

bool PCString::Copy(const char *from, char *to, int size)

{

}

g++ -g -c PCString.cpp -o PCString.o

ar -rsv libPCString.a PCString.o

$ cat test2.cpp

#include “PCString.h”

void fun(void)

{

char test[10];

PCString::Copy(“AAAA”, test, 10);

}

g++ test2.cpp -g -c -o test.o

ar -rsv libTest.a test.o

假如,我们要检查哪些地方调用了 PCString::Copy(), 但是又看不到test2.cpp文件,只能看到 libTest.a。

1)使用 readelf:

readelf,nm, objdump工具使用的用法和总结

2)使用 nm

readelf,nm, objdump工具使用的用法和总结

3)如果 库文件是 debug版的(可以反汇编出源码),也可以用 objdump:

readelf,nm, objdump工具使用的用法和总结

另外,这些工具也可以查询某个模块定义哪些可供外部使用的符号。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工具
    +关注

    关注

    4

    文章

    307

    浏览量

    27713
  • 虚拟机
    +关注

    关注

    1

    文章

    906

    浏览量

    28029
  • gun
    gun
    +关注

    关注

    0

    文章

    6

    浏览量

    7625
收藏 人收藏

    评论

    相关推荐

    无法在Armv7l树莓派3b+上运行binutils-esp32ulp工具链怎么解决?

    esp32ulp-elf-addr2lineesp32ulp-elf-ld esp32ulp-elf-readelf esp32ulp-elf-aresp32ulp-elf-ld.bfdesp32ulp-elf-size
    发表于 06-24 06:26

    求信号处理高级工具包的用法资料

    求信号处理高级工具包的用法资料
    发表于 08-14 14:57

    关于typedef的用法总结

    关于typedef的用法总结不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法
    发表于 09-25 09:11

    可执行映像文件objdump反汇编代码.txt,objdump应该怎么翻译

    可执行映像文件objdump反汇编代码.txt,objdump应该怎么翻译
    发表于 06-08 16:34

    查询Linux应用程序运行依赖哪些库的方法

    )objdump -x AppName |grep NEED 如: arm_v5t_le-objdump -x test |grep NEED 三法: $(CROSS_COMPILE)readelf
    发表于 08-19 07:42

    学习ARM反汇编工具objdump和一个简单实例 精选资料分享

    学习ARM反汇编工具objdump和一个简单实例 --参考朱有鹏ARM裸机编程1、反汇编的原理&为什么需要反汇编arm-linux-objdump -D led.elf > led_elf.disobjdump是gcc
    发表于 07-16 07:13

    OK3399开发板的程序的库依赖关系是什么?

    我想知道OK3399开发板的程序的库依赖关系,发现objdump 、ldd、readelf、apt等命令都没有,还有办法查看吗?
    发表于 12-30 07:31

    总结一下STM32串口的用法

    STM32CubeMX_定时器中断_PWM前两节简单的总结了GPIO, EXTI, TIMER的相关用法, 本节总结一下STM32串口的用法, 依然是原理性的东西不多讲, 直接开干.先
    发表于 02-10 06:17

    enum的用法总结

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl。 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法
    发表于 09-27 15:22 1次下载

    Java数组的常用方法_Java:数组工具类Arrays类的常用方法的用法及代码

    本文主要详细介绍了Java数组的常用方法以及数组工具类Arrays类的常用方法的用法及代码。
    发表于 01-29 10:25 2905次阅读

    Linux后台开发常用调试工具

    nm 程序可用于列举符号及其类型和值,但是,要更仔细地研究目标文件中这些命名段的内容,需要使用功能更强大的工具。其中两种功能强大的工具objdump
    的头像 发表于 08-14 16:26 1464次阅读

    用于查看目标文件或可执行文件的组成信息的命令:objdump命令

    1.功能简介 objdump 命令是 GNU Binutils 二进制工具集的一员,用于查看目标文件或可执行文件的组成信息,以可读的形式打印二进制文件的内容。 2.命令格式 objdump
    的头像 发表于 02-09 18:17 3018次阅读
    用于查看目标文件或可执行文件的组成信息的命令:<b class='flag-5'>objdump</b>命令

    【RT-Thread学习笔记】使用objdump反汇编

    如何使用objdump进行反汇编?
    的头像 发表于 07-30 14:03 2737次阅读
    【RT-Thread学习笔记】使用<b class='flag-5'>objdump</b>反汇编

    Qt Quick开发工具总结

    在实际开发过程中,Qt官方提供了一些工具和实用程序来辅助应用开发,特别是对Qt Quick的开发。本文将对这些工具和实用程序做一些介绍和总结
    的头像 发表于 09-06 14:59 1843次阅读

    Linux系统维护命令的用法

    Linux有很多命令,每个命令基本可以用一篇文章介绍,本文仅简单总结一些常用系统维护命令的用法
    的头像 发表于 04-17 14:57 996次阅读
    Linux系统维护命令的<b class='flag-5'>用法</b>