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

3420阅读 0评论2014-02-20 humjb_1983
分类:LINUX

 

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、找到定义的位置

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

上一篇:SystemTap打印进程堆栈回朔
下一篇:kgtp使用总结