systemtap显示调用树

来源:互联网 发布:snapseed软件下载 编辑:程序博客网 时间:2024/06/06 12:39
脚本:function trace(entry_p) {   if(tid() in trace)       printf("%s%s%s\n",thread_indent(entry_p),                         (entry_p>0?"->":"<-"),                         probefunc())}global traceprobe kernel.function(@1).call {   if (execname() == "stapio") next # skip our own helper process   trace[tid()] = 1   trace(1)}probe kernel.function(@1).return {   trace(-1)   delete trace[tid()]}probe kernel.function(@2).call { trace(1) }probe kernel.function(@2).return { trace(-1) }


结果:

# stap para-callgraph.stp sys_read '*@fs/*.c'[...]     0 klogd(1391):->sys_read    14 klogd(1391): ->fget_light    22 klogd(1391): <-fget_light    27 klogd(1391): ->vfs_read    35 klogd(1391):  ->rw_verify_area    43 klogd(1391):  <-rw_verify_area    49 klogd(1391):  ->kmsg_read     0 sendmail(1696):->sys_read    17 sendmail(1696): ->fget_light    26 sendmail(1696): <-fget_light    34 sendmail(1696): ->vfs_read    44 sendmail(1696):  ->rw_verify_area    52 sendmail(1696):  <-rw_verify_area    58 sendmail(1696):  ->proc_file_read    70 sendmail(1696):   ->loadavg_read_proc    84 sendmail(1696):    ->proc_calc_metrics    92 sendmail(1696):    <-proc_calc_metrics    95 sendmail(1696):   <-loadavg_read_proc   101 sendmail(1696):  <-proc_file_read   106 sendmail(1696):  ->dnotify_parent   115 sendmail(1696):  <-dnotify_parent   119 sendmail(1696):  ->inotify_dentry_parent_queue_event   127 sendmail(1696):  <-inotify_dentry_parent_queue_event   133 sendmail(1696):  ->inotify_inode_queue_event   141 sendmail(1696):  <-inotify_inode_queue_event   146 sendmail(1696): <-vfs_read   151 sendmail(1696):<-sys_read[...]^C

引用地址:http://sourceware.org/systemtap/wiki/WSCallGraph?highlight=

原创粉丝点击