System.map符号表解析
来源:互联网 发布:淘宝售后申请时间 编辑:程序博客网 时间:2024/05/16 11:02
http://blog.chinaunix.net/uid-24148050-id-95497.html
System.map是内核符号表文件,是由“nm vmlinux”命令产生的,位于源码根目录。
所谓“符号”就是函数名,全局变量名等东东,这个表就记录的这些“符号”在内核中的运行地址。(这个地址是Effective Address,虚地址)
下面是文件的一个片段:
下面是文件的一个片段:
- c032ee18 t genl_init
- c032ef18 T netfilter_init
- c032efcc T netfilter_log_init
- c032f020 T netfilter_queue_init
- c032f074 t nfnetlink_init
- c032f0fc t nfnetlink_queue_init
- c032f1e4 t nfnetlink_log_init
- c032f2d0 T nf_conntrack_init
- c032f48c t nf_conntrack_standalone_init
- c032f57c T nf_conntrack_expect_init
- c032f67c t ctnetlink_init
由上可知,netfilter_init() 的地址就是 0xc032ef18
这对调试内核非常有用。比如内核调用了一个函数指针,想知道它到底指向哪个函数,直接printk这个函数指针的地址,根据地址一查表就ok了。
符号类型
名称
说明
A
Absolute
符号的值是绝对值,并且在进一步链接过程中不会被改变
B
BSS
符号在未初始化数据区或区(section)中,即在BSS段中
C
Common
符号是公共的。公共符号是未初始化的数据。在链接时,多个公共符号可能具有同一名称。如果该符号定义在其他地方,则公共符号被看作是未定义的引用
D
Data
符号在已初始化数据区中
G
Global
符号是在小对象已初始化数据区中的符号。某些目标文件的格式允许对小数据对象(例如一个全局整型变量)可进行更有效的访问
I
Inderect
符号是对另一个符号的间接引用
N
Debugging
符号是一个调试符号
R
Read only
符号在一个只读数据区中
S
Small
符号是小对象未初始化数据区中的符号
T
Text
符号是代码区中的符号
U
Undefined
符号是外部的,并且其值为0(未定义)
-
Stabs
符号是a.out目标文件中的一个stab符号,用于保存调试信息
?
Unknown
符号的类型未知,或者与具体文件格式有关
PS. linux内核启动后,可以通过 cat /proc/kallsyms 来查看符号表。
查看符号表的命令
nm -n enetdbg.ko
ld enetdbg.ko --print-map
0 0
- System.map符号表解析
- System.map符号表解析
- System.map符号表
- System.map的符号说明
- 内核符号表System.map
- 内核符号表与system.map
- 内核符号表解释
- Linux内核符号表字符信息的含义(System.map)
- System.map
- system.map
- System.map
- System.map
- system.map
- System.map
- system.map
- System.map
- System.map
- System.map
- 计算机专业人才面试小结
- 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧~~
- Centos 7通过grub修改root用户密码
- topKFrequent(PriorityQueue实现)
- PageRank的初步理解和实践
- System.map符号表解析
- UIImage和Base64字符串互转
- fileupload异步上传多个图片
- 精通 熟悉 了解
- 探究多网卡UDP广播发送源地址
- java中form以post、get方式提交数据中文乱码问题总结
- iOS友盟崩溃地址解析 通过dSYM文件分析定位线上 APP crash问题
- Python 学习之路——1
- Android利用Animation.RELATIVE_TO_SELF做出个性化的动画