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

nm 命令 程序符号信息查看

http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/2572438.html

用途

显示关于对象文件、可执行文件以及对象文件库里的符号信息。

语法

nm [ -A ] [ -C ] [ -X {32|64|32_64}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B -P ] [ -e -g | -u ] [ -d -o -x -tFormat ] File ...

描述

nm 命令显示关于指定 File 中符号的信息,文件可以是对象文件、可执行文件或对象文件库。 如果文件没有包含符号信息,nm 命令报告该情况,但不把它解释为出错条件。 nm 命令缺省情况下报告十进制符号表示法下的数字值。

nm 命令把以下符号信息写入标准输出:

标志

 

-A每行或者显示全路径名称或者显示对象库名。
-B在 Berkeley 软件分发(BSD)格式中显示输出:

 

值   类型   名称
-C限制解码(demangle) C++ 名称。缺省是解码所有 C++ 符号名。
注:
C++ 对象文件中的符号在被使用前它们的名称已经被解码了。
-d用十进制显示符号的值和大小。这是缺省的。
-e只显示静态的和外部的(全局)符号。
-f显示完整的输出,包括冗余的 .text、 .data 以及 .bss 符号,这些在通常都是被限制的。
-g只显示外部的(全局)符号。
-h限制输出头数据的显示。
-l通过给 WEAK 符号的编码键附加一个 * 来区分 WEAK 和 GLOBAL 符号。 如果和 -P 选项一起使用, WEAK 符号的符号类型显示如下:
V
Weak Data 符号
W
Weak Text 符号
w
Weak 未定义符号
Z
Weak bss 符号
-o用八进制而不是十进制数来显示符号的值和大小。
-P以标准可移植输出格式显示信息:

 

库/对象名  名称   类型   值   大小

该格式以十六进制符号表示法显示数字值,除非您用 -t-d 或 -o 标志指定不同的格式。

如果您指定了 -A 标志 -P 标志只显示 库/对象名字段。同样,-P 标志只显示大小适用的符号大小字段。

-p不排序。输出按符号表顺序打印。
-r倒序排序。
-T把可能会溢出它的列的每个名字截短,使显示的名字的最后一个字符是星号(*)。 缺省情况下,nm 显示列出的符号的全名,并且一个比为其设置的列的宽度长的名称会引起名称后的每个列无法对齐。
-t Format显示指定格式下的数字值,其中 Format 参数是以下符号表示法之一:
d
十进制符号表示法。这是  nm 命令的缺省格式。
o
八进制符号表示法。
x
十六进制符号表示法。
-u只显示未定义符号。
-v按值而不是按字母表顺序排序输出。
-x用十六进制而不是十进制数来显示符号的值和大小。
-X mode指定 nm 应该检查的对象文件的类型。 mode 必须是下列之一:
32
只处理 32 位对象文件
64
只处理 64 位对象文件
32_64
处理 32 位和 64 位对象文件

缺省是处理 32 位对象文件(忽略 64 位对象)。 mode 也可以 OBJECT_MODE 环境变量来设置。例如,OBJECT_MODE=64 使 nm 处理任何 64 位对象并且忽略 32 位对象。 -X 标志覆盖 OBJECT_MODE 变量。

注:
nm 命令支持  -- (双连字符)标志。如果文件名会被曲解为一个选项,该标志区别于  File 操作数。 例如,要指定文件名以连字符开始,请使用  -- 标志。

退出状态

该命令返回下列出口值:

0成功完成。
>0发生错误。

示例

  1. 列出 a.out 对象文件的静态和外部符号,请输入:

     

    nm -e a.out
  2. 以十六进制显示符号大小和值并且按值排序符号,请输入:

     

    nm -xv a.out
  3. 显示 libc.a 中所有 64 位对象符号,忽略所有 32 位对象:

     

    nm -X64 /usr/lib/libc.a

转载于:https://www.cnblogs.com/jingzhishen/p/3504982.html

相关文章:

  • HBase之八--(1):HBase二级索引的设计(案例讲解)
  • 记录上锁
  • Markdown学习笔记
  • 《需求工程》阅读随笔-1.做什么和怎么做
  • curl_errno错误码说明
  • 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇03:子弹发射》
  • 交换机的link-dependency链路依赖功能
  • 打开FTP服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹
  • 解决:导入第三方jar包后,仍然出现java.lang.NoClassDefFoundError的错误
  • javascript deferred
  • c#对象的内存结构(学习笔记)
  • 学习python的网址
  • 45 个非常有用的 Oracle 查询语句
  • Oracle 创建表空间一边串过程
  • 解读《TCP/IP详解》(卷1):03章:IP(网际协议)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Bootstrap JS插件Alert源码分析
  • input的行数自动增减
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 从重复到重用
  • 番外篇1:在Windows环境下安装JDK
  • 经典排序算法及其 Java 实现
  • 聊聊sentinel的DegradeSlot
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 世界上最简单的无等待算法(getAndIncrement)
  • 手写双向链表LinkedList的几个常用功能
  • 积累各种好的链接
  • 进程与线程(三)——进程/线程间通信
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)基于IDEA的JAVA基础10
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .project文件
  • /etc/sudoer文件配置简析
  • @DataRedisTest测试redis从未如此丝滑
  • @JsonFormat与@DateTimeFormat注解的使用
  • @media screen 针对不同移动设备
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [codeforces]Recover the String
  • [Foreman]解决Unable to find internal system admin account