Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1241043
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4004
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

分类: LINUX

2014-02-20 16:08:05

 

http://blog.csdn.net/justlinux2010/article/details/10284217

SystemTap----利用stap命令来查找内核函数定义

分类: SystemTap 2013-08-24 19:57 373人阅读 评论(0) 举报

   我们知道stap命令的-l(或-L)选项可以列出指定的某个probe描述中所有符合的probe点的列表,例如可以使用下面的命令,看到所有可以probe的函数:

stap -l 'kernel.function("*")'

今天在看书的时候,突然想到可以利用这个选项来找到一些内核函数的定义,例如sys_open()的定义。不管是source insight还是vim+ctag+cscope+taglist这样的组合看代码时,如果要想找到某个系统调用的定义,都需要在工程里搜索,因为这些系统调用在定义的时候都是用SYSCALL_DEFINE0SYSCALL_DEFINE1等这样的宏来定义的,这些工具都没法直接找到其准确定义的位置。但是现在我们可以利用stap命令的-l选项,先准确地找到其具体的位置,然后精确地去某个文件的某一行就可以找到,非常快捷方便。下面就以sys_open()为例来演示这个过程。

1、找到具体的位置

命令和输出如下:

[root@CentOS____190 ~]# stap -l 'kernel.function("sys_open")'
kernel.function(
)

2、找到定义的位置

上面的步骤只是一个思路,如果想进一步简化的话,可以直接写一个脚本,每次只需要输入要查找的函数名称就行了,避免做重复的劳动。

阅读(3207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~