当前位置: 首页 > 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.lqws.cn/news/85681.html

相关文章:

  • 构建高性能风控指标系统
  • YARN应用日志查看
  • ubuntu安装devkitPro
  • DAX权威指南6:DAX 高级概念(扩展表)、DAX 计算常见优化
  • 7.文本内容处理sort,uniq,out,cat,comm,diff
  • 前端面经高阶组件HOC 和 HOOKS Redux
  • 小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分
  • cnn训练并用grad-cam可视化
  • 云服务器突发宕机或无响应怎么办
  • MCP (模型上下文协议):AI界的“USB-C”标准,开启大模型应用新纪元
  • URP - 水效果Shader
  • 动中通天线跟踪性能指标的测试
  • 密码学:解析Feistel网络结构及实现代码
  • imx6ull(0):烧录、启动
  • 《软件项目管理》第二章(项目准备与启动)期末周复习总结笔记
  • C++ list代码练习、set基础概念、set对象创建、set大小操作
  • 2025GDCPC广东省赛游记(附赛时代码)
  • 基于LangChain的AI助手开发:从零到上线
  • 天机学堂-分页查询
  • 21-CS61B-lab6:java文件操作以及持久化一见
  • PNG文件格式
  • 【技术支持】安卓开发中queryUsageStats不准确的问题
  • 【latex】易遗忘的表达
  • cpper 转 Golang
  • 【LLM】AI Agents vs. Agentic AI(概念应用挑战)
  • K-匿名模型
  • 英语中什么时候用that?
  • 电磁场与电磁波公式汇总
  • DeepSeek 部署中的常见问题及解决方案
  • 【Java EE初阶 --- 多线程(初阶)】多线程的实现案例