当前位置: 首页 > news >正文

【nm】nm命令的使用:查看.so中的符号信息

文章目录

  • 1. 基本语法与常用选项
  • 2. 符号类型
  • 3. 使用示例
        • 查看特定符号是否存在
        • 显示未定义符号(用于依赖检查)
        • 查找所有函数符号
        • 检查符号冲突
        • 查找符号来源文件(需要调试信息)

nm:Name Mangling命令是GNU Binutils工具集的一部分,用于显示.o,.so,可执行文件等中的符号表信息。

1. 基本语法与常用选项

nm [选项] <文件>
# 常用选项
-a : 显示所有符号,包括调试符号
-g : 仅显示外部(全局)符号
-u : 仅显示未定义符号(需要外部提供)
-D : 显示动态符号(用于共享库)
-C : 反解析C++符号
--defined-only : 仅显示已定义的符号
--no-demangle : 禁用C++符号反解析
-l : 显示符号对应的源代码行号(需要调试信息)
-S : 显示符号大小,如数据对象大小
--size-sort : 按符号大小排序
--numeric-sort : 按符号地址排序
--no-strip-undefined : 保留所有符号,有的符号可能被优化掉

2. 符号类型

nm命令回显的第二列表示符号类型:

A : 绝对地址,不可更改
B : BSS段,未初始化数据
D : 数据段,初始化数据
T : 代码段,函数或可执行代码
U : 未定义符号,需要外部提供
W : 弱符号,可被覆盖
V : 弱对象符号
I : 间接引用
小写字母 : 表示局部符号,比如 t 就表示局部函数

3. 使用示例

查看特定符号是否存在
nm -gC --defined-only libexample.so | grep -w 'symbol_name'
显示未定义符号(用于依赖检查)
nm -u myapp
查找所有函数符号
nm -gC libexample.so | grep ' T '
检查符号冲突
nm -gC libmerged.a | awk '{print $3}' | sort | uniq -d
查找符号来源文件(需要调试信息)
nm -l libdebug.so | grep my_function

相关文章:

  • RocketMQ介绍与部署
  • NodeJS全栈WEB3面试题——P6安全与最佳实践
  • SDU棋界精灵——实现硬件程序ESP32的FreeRTOS任务
  • 【LeetCode 热题100】动态规划实战:打家劫舍、完全平方数与零钱兑换(LeetCode 198 / 279 / 322)(Go语言版)
  • 【QT控件】QWidget 常用核心属性介绍 -- 万字详解
  • Laplace 噪声
  • 案例:TASK OA
  • YOLOv5 :训练自己的数据集
  • wow Warlock shushia [Dreadsteed]
  • 简单了解string类的特性及使用(C++)
  • MDP的curriculums部分
  • volatile,synchronized,原子操作实现原理,缓存一致性协议
  • 基于Python学习《Head First设计模式》第四章 工厂方法+抽象工厂
  • “等待-通知”机制优化(一次性申请)循环等待
  • HarmonyOS5 仓颉入门:和 ArkTs 互操作
  • 初识vue3(vue简介,环境配置,setup语法糖)
  • RGB888色彩格式转RGB565格式
  • VMware安装Ubuntu全攻略
  • 记忆解码 | 从神经机制到记忆逻辑的科学探索
  • Google机器学习实践指南(TensorFlow六大优化器)
  • 男人和女人在床上做那个网站/宁波网站推广哪家公司好
  • 设计手机商城网站建设/seo培训课程
  • 万网如何做网站/巨量算数数据分析入口
  • 上海专业做网站公司地址/刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 同城网站/网络推广有几种方法
  • 互联网创业项目app/seo最新