当 运行 systemstap 脚本时出现“__tracepoint_sched_process_fork 未定义”

"__tracepoint_sched_process_fork undefined" when run systemstap script

错误信息:

WARNING: "__tracepoint_sched_process_fork" [/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko] undefined!
WARNING: "__tracepoint_sys_exit" [/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko] undefined!
WARNING: "__tracepoint_sys_enter" [/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko] undefined!
WARNING: "__tracepoint_sched_process_exec" [/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko] undefined!
WARNING: "__tracepoint_sched_process_exit" [/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko] undefined!
ERROR: Couldn't insert module '/tmp/stapH5cHsd/stap_958d0ff0e571c9357f1e193511d8baa3_269311.ko': Unknown symbol in module
WARNING: /usr/bin/staprun exited with status: 1
Pass 5: run failed.  [man error::pass5]
Tip: /usr/share/doc/systemtap/README.Debian should help you get started.

我的环境:

# cat /proc/version
Linux version 3.16.0-70-generic (buildd@lgw01-01) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #90~14.04.1-Ubuntu SMP Wed Apr 6 22:56:34 UTC 2016

# stap -V
Systemtap translator/driver (version 2.3/0.158, Debian version 2.3-1ubuntu1.4 (trusty))
Copyright (C) 2005-2013 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: AVAHI LIBSQLITE3 NSS TR1_UNORDERED_MAP NLS

# dpkg --list | grep `uname -r` 

ii  linux-headers-3.16.0-70-generic                       3.16.0-70.90~14.04.1                                amd64        Linux kernel headers for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-70-generic                         3.16.0-70.90~14.04.1                                amd64        Linux kernel image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-3.16.0-70-generic-dbgsym                  3.16.0-70.90~14.04.1                                amd64        Linux kernel debug image for version 3.16.0 on 64 bit x86 SMP
ii  linux-image-extra-3.16.0-70-generic                   3.16.0-70.90~14.04.1                                amd64        Linux kernel extra modules for version 3.16.0 on 64 bit x86 SMP
ii  linux-signed-image-3.16.0-70-generic                  3.16.0-70.90~14.04.1                                amd64        Signed kernel image generic


# sudo cat /proc/kallsyms | grep __tracepoint_sched_process_fork
ffffffff81cecbe0 D __tracepoint_sched_process_fork

我在 the maillist of systemtap 上问过这个问题,很快我就得到了答案。

这是因为“跟踪点API在内核3.15中发生了变化,我们 赶上了 systemtap 2.5 中的那些变化”,也就是我需要一个新版本的 systemtap。

下载systemtap-2.6并安装后,运行良好,没有这个错误。