zoukankan      html  css  js  c++  java
  • nm用法小记

    nm用于显示目标文件的符号,也是二进制工具集(info binutils)里的一员

    先来看一个例子,源码和对应的命令结果

    四部分分别表示的意义

    1. 符号所在的obj文件名
    2. 符号的值,这里应该是指符号所在段的偏移地址。
    3. 符号类型
    4. 符号名

     

    其中,'3'的符号类型有以下几类,小写表示局部,大写表示全局

    A

    符号的值不会在连接时发生改变,是固定的

    bB

    符号在未初始化数据段(BSS)

    C

    The symbol is common. Common symbols are uninitialized data. When linking, multiple common symbols may appear with the same name. If the symbol is defined anywhere, the common symbols are treated as undefined references.

    Dd

    符号在初始化的数据段里(.data)

    Gg

    符号在初始化的数据段里(small objects),个别的允许小数据的目标文件

    N

    符号是调试符号

    p

    符号在stack unwind段里

    R

    符号在只读数据段里

    Ss

    符号在未初始化的数据段里(for small objects)

    T

    符号在代码(text)段(code)

    U

    符号未定义

    u

    符号是一个唯一的全局符号

     

    命令概述

     

    选项解释

    只介绍有用的

    -a

    --debug-syms

    显示所有的符号。

    -D

    --dynamic

    显示动态符号而不是通常的符号,通常用来显示动态库

    -g

    --extern-only

    只显示外部的(external)符号

    -l

    --line-numbers

    用调试信息尽量找出符号对应的文件名和行数(有时候会不准确)

    -n

    -V

    --numeric-sort

    用地址排序符号而不是用名字的字母排序

    -r

    --reverse-sort

    反转排序序列

    -S

    --print-size

    以bsd风格同时打印符号的地址和大小

    -s

    --print-armap

    同时打印出索引(由ar或ranlib生成),可以知道符号是哪个模块的。(用于库文件)

    -t radix

    --radix=radix

    指定基地址数制,

    d 十进制

    o 八进制

    x 十六进制

    -u

    --undefined-only

    只打印未定义的符号

    --size-sort

    以符号的大小排序

     

     


    本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
    转载自:http://www.cnblogs.com/yinghao1991/p/6395566.html

     

     

    参考

    【1】 man nm

  • 相关阅读:
    git revert和git reset的区别
    git merge 和 git rebase 小结
    Markdown——入门指南
    使用Git Wiki 管理文档时,文档编写的基本用法
    mysql 列 默认添加 dedault null ??
    redis aof文件过大问题
    redis源码分析——aofrewrite
    改变文章的字号大小
    推荐大家使用的CSS书写规范及顺序
    inline-block 前世今生
  • 原文地址:https://www.cnblogs.com/yinghao-liu/p/6395566.html
Copyright © 2011-2022 走看看