当前位置: 首页 > 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
http://www.xdnf.cn/news/775567.html

相关文章:

  • ps自然饱和度调整
  • 江科大RTC实时时钟hal库实现
  • 模块二:C++核心能力进阶(5篇)第三篇:《异常安全:RAII与异常传播的最佳实践》
  • 性能测试的概念和场景设计
  • 【LLM】AI Agents vs. Agentic AI(概念应用挑战)
  • 污痕圣杯:阿瓦隆的陨落 整合包 离线版
  • vite构建工具
  • Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String
  • 基于springboot的家政服务预约系统
  • LINUX62软链接;核心目录;错题:rpm -qa |grep<包名> 、rpm -ql<包名>;rm -r rm -rf;合并 cat
  • Ubuntu安装遇依赖包冲突解决方法
  • Flex 布局基础
  • svg与Three.js对比
  • 295. 数据流的中位数
  • DAY01:【ML 第三弹】基本概念和建模流程
  • GNURadio实现MIMO OFDM文件传输
  • 17.进程间通信(三)
  • ps可选颜色调整
  • 每日一道面试题---ArrayList的自动扩容机制(口述版本)
  • LLM模型量化从入门到精通:Shrink, Speed, Repeat
  • Java线程生命周期详解
  • 【数据分析】第三章 numpy(1)
  • 第二十一章 格式化输出
  • 制作开发AI试衣换装小程序系统介绍
  • URP - 水效果Shader
  • 类和对象(二)
  • 《Pytorch深度学习实践》ch3-反向传播
  • 使用ArcPy批量处理矢量数据
  • 力扣刷题Day 67:N 皇后(51)
  • 树莓派实验