研究性能测试工具之systemtap入门指南(五)

[root@BL480-64 jinyz]# more topcaller.stp
global bt
probe syscall.open 
{  if (execname() == "find") {bt[tid()] = backtrace()} }

probe end {
  foreach (fn in bt-) { # Sort by call count (in decreasing order)
    printf("%d==%s\n", fn, bt[fn])
    print_stack(bt[fn])
    }
  exit()
}
输出结果:
[root@BL480-64 jinyz]# stap topcaller.stp
31812==0xffffffff80031061 0xffffffff8005d28d 0xffffffffda000000 0xffffffffffda0000 0xffffffffffffda00 0xffffffffffffffda 0xfffffffffff
 0xffffffff80031061 : sys_open+0x1/0x17 [kernel]
 0xffffffff8005d28d : add_disk_randomness+0xb6c/0x178b [kernel]
 0xffffffffda000000 : packet_exit+0x59be830f/0x7f1e830f [kernel]
 0xffffffffffda0000 : venosys_1+0x79f400/0x0 [kernel]
 0xffffffffffffda00 : venosys_1+0x9fce00/0x0 [kernel]
 0xffffffffffffffda : venosys_1+0x9ff3da/0x0 [kernel]
 0x00000fffffffffff
31814==0xffffffff80031061 0xffffffff8005d28d 0xffffffffda000000 0xffffffffffda0000 0xffffffffffffda00 0xffffffffffffffda 0xfffffffffff
 0xffffffff80031061 : sys_open+0x1/0x17 [kernel]
 0xffffffff8005d28d : add_disk_randomness+0xb6c/0x178b [kernel]
 0xffffffffda000000 : packet_exit+0x59be830f/0x7f1e830f [kernel]
 0xffffffffffda0000 : venosys_1+0x79f400/0x0 [kernel]
 0xffffffffffffda00 : venosys_1+0x9fce00/0x0 [kernel]
 0xffffffffffffffda : venosys_1+0x9ff3da/0x0 [kernel]
 0x00000fffffffffff
输出结果分析,add_disk_randomness函数调用sys_open系统调用,以后再研究具体分析find命令的源代码。

 

4、 使用topcaller.stp脚本,列出系统调用堆栈
脚本如下:

 

posted @ 2013-04-27 16:42  小黑金  阅读(366)  评论(0编辑  收藏  举报