怎样从kernel源码中众多的同名函数中,区分出哪一个才与我们相关的
时间:2009-08-22
来源:互联网
小弟,我正准备读内核源码,其中有些同名函数会在很多文件中被定义,怎样快速找到哪个函数定义才是与我们有关的呢?
比如:以setup_arch函数为例,在内核中有很多个文件都定义了它,我怎么能快速的知道,哪个文件中定义的setup_arch函数才是我的S3C2440所需要的呢?
我知道,linux/arch/arm/kernel/setup.c文件中定义的那个setup_arch函数是我的S3C2440所需要的,但是这是需要分析才知道的。
在u-boot中,就有一种快速方法“从众多的同名函数中找到与我们相关的那一个”:
编译出来完的uboot会生成一个u-boot.map文件,你只要以这个“函数的名字”为关键字去u-boot.map中查找,就能找到编译出来的uboot映像,使用的是哪个文件中的函数了。
比如:uboot源码中对icache_enable函数的定义会存在于很多文件中,那么到底哪个才是与我们有关的呢?
我们只要去u-boot.map文件查找“icache_enable ”,就会看到:
“ .text 0x33f98f18 0x104 cpu/arm920t/libarm920t.a(cpu.o)
0x33f98fb8 icache_status
0x33f98fe4 icache_enable “
所以cpu/arm920t/libarm920t.a(cpu.o)也就是cpu/arm920t/cpu.c中定义的icache_enable函数才是真正编译进内核的,也就是我们所需要的。
所以,我的问题是kernel中有没有一个和“u-boot.map”相似的文件,能让我快速的从众多同名函数中找到哪个才是真正编译进映像文件的那个?
比如:以setup_arch函数为例,在内核中有很多个文件都定义了它,我怎么能快速的知道,哪个文件中定义的setup_arch函数才是我的S3C2440所需要的呢?
我知道,linux/arch/arm/kernel/setup.c文件中定义的那个setup_arch函数是我的S3C2440所需要的,但是这是需要分析才知道的。
在u-boot中,就有一种快速方法“从众多的同名函数中找到与我们相关的那一个”:
编译出来完的uboot会生成一个u-boot.map文件,你只要以这个“函数的名字”为关键字去u-boot.map中查找,就能找到编译出来的uboot映像,使用的是哪个文件中的函数了。
比如:uboot源码中对icache_enable函数的定义会存在于很多文件中,那么到底哪个才是与我们有关的呢?
我们只要去u-boot.map文件查找“icache_enable ”,就会看到:
“ .text 0x33f98f18 0x104 cpu/arm920t/libarm920t.a(cpu.o)
0x33f98fb8 icache_status
0x33f98fe4 icache_enable “
所以cpu/arm920t/libarm920t.a(cpu.o)也就是cpu/arm920t/cpu.c中定义的icache_enable函数才是真正编译进内核的,也就是我们所需要的。
所以,我的问题是kernel中有没有一个和“u-boot.map”相似的文件,能让我快速的从众多同名函数中找到哪个才是真正编译进映像文件的那个?
作者: shiyuzhu 发布时间: 2009-08-22
我也想知道,一直都是自己分析后才知道的
请大侠指点下,有没有更好的办法!
请大侠指点下,有没有更好的办法!
作者: aliasw 发布时间: 2009-08-27
我也是类似的疑问!
苦恼!
苦恼!
作者: 风之湍 发布时间: 2009-09-30
加printk在每个函数,然后看哪一个打印出来就是了,记得如果是
一个频繁调用的函数的话,最好加一个静态变量来控制
只打印一次
如:
a()
{
static ONCE = 1;
if (ONCE ) {
printk("in /src/include/ccc...\ n");
};
ONCE = 0;
}
一个频繁调用的函数的话,最好加一个静态变量来控制
只打印一次
如:
a()
{
static ONCE = 1;
if (ONCE ) {
printk("in /src/include/ccc...\ n");
};
ONCE = 0;
}
作者: njkzkj 发布时间: 2009-10-06
楼上的方法太麻烦了吧,还要重新编译内核,请高手介绍点好方法
作者: zdwxck 发布时间: 2009-10-19
引用:
作者: shiyuzhu
小弟,我正准备读内核源码,其中有些同名函数会在很多文件中被定义,怎样快速找到哪个函数定义才是与我们有关的呢? ......
|
http://www.china-pub.com/195695&ref=ps
第13章 常用内核分析方法
13.1 准确定位同名宏及结构体
13.2 准确定位同名函数 <---- 这就是你关心的
13.3 利用linkcmapc文件定位全局变量
13.4 准确定位函数调用线索
13.5 SystemTapc在代码分析中的使用
作者: 独孤求真 发布时间: 2009-10-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28