首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在带有3.5.0/3.8.0内核的Ubuntu 12.04上使用systemtap 1.7/2.1?

是否可以在带有3.5.0/3.8.0内核的Ubuntu 12.04上使用systemtap 1.7/2.1?
EN

Stack Overflow用户
提问于 2013-07-11 22:08:30
回答 2查看 1.7K关注 0票数 4

我的目标是能够在Ubuntu 12.04/precise主机上使用用户空间探测。从3.5.0内核开始,这是可能的,所以我安装了以下软件包:

代码语言:javascript
复制
linux-headers-3.5.0-34
linux-headers-3.5.0-34-generic
linux-image-3.5.0-34-generic
linux-image-3.5.0-34-generic-dbgsym
linux-image-generic-lts-quantal
linux-source
linux-source-3.5.0

和systemtap v1.7,来自12.10/quantal。

但在启动任何stap脚本后,我看到的唯一一件事是:

代码语言:javascript
复制
ERROR: module version mismatch (#55-Ubuntu SMP Thu Jun 6 20:18:19 UTC 2013 vs #55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013), release 3.5.0-34-generic
ERROR: Build-id mismatch [man error::buildid]: "/usr/lib/debug/boot/vmlinux-3.5.0-34-generic" byte 0 (0x84 vs 0xc2) address 0xffffffff8168e60c rc 0

取消命名-a:

代码语言:javascript
复制
Linux nginx-dev01g 3.5.0-34-generic #55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

来自13.04/raring的systemtap v2.1显示完全相同的错误。

systemtap v1.6 (12.04中的默认版本)在编译时失败:

代码语言:javascript
复制
In file included from /usr/share/systemtap/runtime/transport/transport.c:53:0,
             from /usr/share/systemtap/runtime/print.c:18,
             from /usr/share/systemtap/runtime/runtime.h:128,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:59:
/usr/share/systemtap/runtime/transport/relay_v2.c:241:2: error: initialization from incompatible pointer type [-Werror]
/usr/share/systemtap/runtime/transport/relay_v2.c:241:2: error: (near initialization for ‘__stp_relay_callbacks.create_buf_file’) [-Werror]
In file included from /usr/share/systemtap/runtime/print.c:18:0,
             from /usr/share/systemtap/runtime/runtime.h:128,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:59:
/usr/share/systemtap/runtime/transport/transport.c: In function ‘_stp_get_root_dir’:
/usr/share/systemtap/runtime/transport/transport.c:386:8: error: ‘struct hlist_head’ has no member named ‘next’
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:61:0:
/usr/share/systemtap/runtime/stat.c: In function ‘_stp_stat_get’:
/usr/share/systemtap/runtime/stat.c:213:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/stat.c:213:2: note: each undeclared identifier is reported only once for each function it appears in
/usr/share/systemtap/runtime/stat.c: In function ‘_stp_stat_clear’:
/usr/share/systemtap/runtime/stat.c:248:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13594:0:
/usr/share/systemtap/runtime/pmap-gen.c: In function ‘_stp_pmap_new_sx’:
/usr/share/systemtap/runtime/pmap-gen.c:717:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/pmap-gen.c: In function ‘_stp_pmap_get_sx’:
/usr/share/systemtap/runtime/pmap-gen.c:943:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /usr/share/systemtap/runtime/map.c:20:0,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13609:
/usr/share/systemtap/runtime/map-stat.c: In function ‘_stp_pmap_new_hstat_linear’:
/usr/share/systemtap/runtime/map-stat.c:71:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map-stat.c: In function ‘_stp_pmap_new_hstat_log’:
/usr/share/systemtap/runtime/map-stat.c:98:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13609:0:
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_new’:
/usr/share/systemtap/runtime/map.c:242:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_clear’:
/usr/share/systemtap/runtime/map.c:350:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_del’:
/usr/share/systemtap/runtime/map.c:402:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_agg’:
/usr/share/systemtap/runtime/map.c:732:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_size’:
/usr/share/systemtap/runtime/map.c:908:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
cc1: all warnings being treated as errors

不幸的是,更新到12.10/13.04不是一个选项。

那么,有没有机会在Ubuntu 12.04/precise上获得3.5.0或3.8.0内核的系统开发工具呢?

EN

回答 2

Stack Overflow用户

发布于 2013-07-12 09:59:05

您可能需要更新您的systemtap版本,因为非常旧的版本(例如,1.7来自2012年初)通常不能与非常新的内核一起工作(但反之亦然)。

原始的build-id错误是ubuntu -dbgsym存储库中的一个真正的版本不匹配问题。您需要确保您的运行内核版本与dbgsym版本完全匹配。对于Ubuntu,这可能很棘手,因为"uname -r“和dpkg名称不包含构建的唯一标识。查看以下内容之间的区别:

代码语言:javascript
复制
#55-Ubuntu SMP Thu Jun 6 20:18:19 UTC 2013

代码语言:javascript
复制
#55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013

但是,为什么用户空间探测需要内核调试符号呢?请包括您的stap脚本和stap-report输出。还可以尝试stap-prep脚本。

另一个复杂的因素是Ubuntu内核中可能缺少CONFIG_UPROBES。另请参阅http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691167

票数 2
EN

Stack Overflow用户

发布于 2013-09-26 12:35:51

我编译了systemstap release-2.3。它可以在带有linux-image-3.5.0-40-generic-dbgsym的Ubuntu 12.04上运行。

安装带有调试信息的内核。Where to get debug symbols for kernel X?

编译systemstap 2.3

代码语言:javascript
复制
sudo apt-get build-dep systemtap
git clone git://sourceware.org/git/systemtap.git
cd systemtap
git checkout release-2.3
./configure
make all # you can ignore the xmlto error

# enjoy it
sudo ./stap testsuite/systemtap.examples/network/tcpdumplike.stp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17595621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档