nm命令中符号类型详解
摘自http://blog.csdn.net/solmyr_biti/article/details/6565479
nm命令介绍的很多,但大多不介绍其函数符号标志的含义。
最近在调试动态库时常用到,其中用的最多的用法:
nm -A * |grep “aaa” | c++filt // -A 为了显示文件, c++filt转换为可读风格,好像有个参数也能实现类似功能
其他内容整理如下(原作者未知):
nm用于列出目标文件的符号清单,如果没有指定目标文件,则默认为“a.out”。nm的格式如下:
nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’]
[‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’]
[‘-S’|‘--print-size’] [‘-s’|‘--print-armap’]
[‘-A’|‘-o’|‘--print-file-name’][‘--special-syms’]
[‘-n’|‘-v’|‘--numeric-sort’] [‘-p’|‘--no-sort’]
[‘-r’|‘--reverse-sort’] [‘--size-sort’] [‘-u’|‘--undefined-only’]
[‘-t’ radix|‘--radix=’radix] [‘-P’|‘--portability’]
[‘--target=’bfdname] [‘-f’format|‘--format=’format]
[‘--defined-only’] [‘-l’|‘--line-numbers’] [‘--no-demangle’]
[‘-V’|‘--version’] [‘-X 32_64’] [‘--help’] [objfile...]
对于每一个符号,nm列出其值(the symbol value),类型(the symbol type)和其名字(the symbol name)。
如下例:
00000024 T cleanup_before_linux
00000018 T cpu_init
00000060 T dcache_disable
00000054 T dcache_enable
0000006c T dcache_status
00000000 T do_reset
0000003c T icache_disable
00000030 T icache_enable
00000048 T icache_status
上面的显示是使用nm cpu.o的输出,对于cleanup_before_linux这个符号来说,00000024是以16进制显示的其值,T为其类型,而cleanup_before_linux是其名字。可以看出,上面显示的cleanup_before_linux这个symbol的值实际上是该函数在text section中的偏移。但是,每个符号的值的具体含义依其类型而异。当然,对于每个符号的值,其类型、其值以及它们所属的section是密切相关的。
下面说明符号类型:对于每一个符号来说,其类型如果是小写的,则表明该符号是local的;大写则表明该符号是global(external)的。
|
|||||||||||||||||||||||||||||||||
nm命令中符号类型详解的更多相关文章
- Java中String类型详解
这篇博客是我一直想总结的,这两天一直比较忙,先上传下照片吧,过后有时间再弄成正常的. 本文主要是对Java中String类型的总结,包括其在JVM中是怎么存储的...
- Linux grep 命令中的正则表达式详解
在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expres ...
- Linux下的vi编辑命令中查找·替换详解
一.查找 查找命令 /pattern<Enter> :向下查找pattern匹配字符串 ?pattern<Enter>:向上查找pattern匹配字符串 使用了查找命令之后,使 ...
- Java中Date类型详解
一.Date类型的初始化 1. Date(int year, int month, int date); 直接写入年份是得不到正确的结果的. 因为java中Date是从1900年开始算的,所以前面的第 ...
- (转)linux 中特殊符号用法详解
linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员 $普通用户 脚本中 #!/b ...
- Maven依赖中的scope详解,在eclipse里面用maven install可以编程成功,到服务器上用命令执行报VM crash错误
Maven依赖中的scope详解 项目中用了<scope>test</scope>在eclipse里面用maven install可以编译成功,到服务器上用命令执行报VM cr ...
- MySQL中tinytext、text、mediumtext和longtext等各个类型详解
转: MySQL中tinytext.text.mediumtext和longtext等各个类型详解 2018年06月13日 08:55:24 youcijibi 阅读数 26900更多 个人分类: 每 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
随机推荐
- Linux系统编程(24)——信号的生命周期
信号生命周期为从信号发送到信号处理函数的执行完毕. 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程中 ...
- Linux系统编程(15)——shell脚本语法
Shell字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 单引号 s ...
- python之路-SQLAlchemy
SQLAchemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行S ...
- java web分页查询初试
ssh2分页查询初试,放着记录学习一下. entity:student.java: package com.zte.entity; /** * 数据持久化,跟数据库的的相应的表的字段是对应的. * * ...
- 7. Shell 脚本编写
一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...
- 【转】SSIS 2012 – Package Configurations Menu Option Missing
原文:http://dataqueen.unlimitedviz.com/2012/01/ssis-2012-package-configurations-menu-option-missing/ I ...
- JQ 无刷新评论
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- IOS总结 静变量static、全局变量extern、局部变量、实例变量
1.静态变量 static 什么是静态变量:从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时有力求不破坏类的封装性,既要求此成员隐藏在类的内部,有要求对外不可见的时候,就可以使用s ...
- C#调用WebService实例和开发(转)
1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...
- 世界国家名与英文名【json】
英文版 var geolocation= [ ["AO", "Angola"], ["AF", "Afghanistan& ...