惠州中小企业网站制作,净化科技网站建设,产品单页设计图片,wordpress的登录密码1. nm 命令#xff1a;
显示关于指定 File 中符号的信息#xff0c;文件可以是对象文件、可执行文件或对象文件库。如果文件没有包含符号信息#xff0c;nm 命令报告该情况#xff0c;但不把它解释为出错条件。 nm 命令缺省情况下报告十进制符号表示法下的数字值。
2. 命…1. nm 命令
显示关于指定 File 中符号的信息文件可以是对象文件、可执行文件或对象文件库。如果文件没有包含符号信息nm 命令报告该情况但不把它解释为出错条件。 nm 命令缺省情况下报告十进制符号表示法下的数字值。
2. 命令选项说明
-a或–debug-syms显示所有的符号包括debugger-only symbols。 -B等同于–formatbsd用来兼容MIPS的nm。 -C或–demangle将低级符号名解析(demangle)成用户级名字。这样可以使得C函数名具有可读性。 –no-demangle默认的选项不需要将低级符号名解析成用户级名。 -D或–dynamic显示动态符号。该任选项仅对于动态目标(例如特定类型的共享库)有意义。 -f format使用format格式输出。format可以选取bsd、sysv或posix该选项在GNU的nm中有用。默认为bsd。 -g或–extern-only仅显示外部符号。 -n、-v或–numeric-sort按符号对应地址的顺序排序而非按符号名的字符顺序。 -p或–no-sort按目标文件中遇到的符号顺序显示不排序。 -P或–portability使用POSIX.2标准输出格式代替默认的输出格式。等同于使用任选项-f posix。 -s或–print-armap当列出库中成员的符号时包含索引。索引的内容包含哪些模块包含哪些名字的映射。 -r或–reverse-sort反转排序的顺序(例如升序变为降序)。 –size-sort按大小排列符号顺序。该大小是按照一个符号的值与它下一个符号的值进行计算的。 –targetbfdname指定一个目标代码的格式而非使用系统的默认格式。 -u或–undefined-only仅显示没有定义的符号(那些外部符号)。 –defined-only:仅显示定义的符号。 -l或–line-numbers对每个符号使用调试信息来试图找到文件名和行号。 -V或–version显示nm的版本号。 –help显示nm的选项。
3. 实例
寻找特殊标识 有时会碰到一个编译了但没有链接的代码那是因为它缺失了标识符 比如连接器报错有未定义的标识符大多数情况下会发生在库的缺失或企图链接一个错误版本的库的时候浏览目标代码来寻找一个特殊标识符的引用:
nm -uCA *.o | grep foo-u选项限制了每个目标文件中未定义标识符的输出。 -A选项用于显示每个标识符的文件名信息 对于C代码常用的还有-C选项它也为解码这些标识符
常用的查找 C 符号
nm -C execute_file | grep target_symbol列出 a.out 对象文件的静态和外部符:
$nm -e a.out以十六进制显示符号大小和值并且按值排序符号:
$nm -xv a.out显示 libc.a 中所有 64 位对象符号忽略所有 32 位对象:
$nm -X64 /usr/lib/libc.a4. 引用
nm 目标文件格式分析