systemtap 在Ubuntu上安装

本文详细介绍在Ubuntu 12.04 LTS上安装SystemTap的方法,包括安装SystemTap本身及必要的内核debuginfo,通过一个实用的脚本简化安装流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.chinaunix.net/uid-24774106-id-3404192.html

    systemtap是一个很有用的工具,熟悉我博客的可以看出我以前用过这个工具,这个工具的有点就在于高度的可定制,只要你对内核足够的熟悉,你可以观 测很多参数或者数据,得到Linux很多的信息。在这方面,淘宝的霸爷是大师级的高手。我最早接触systemtap就是从霸爷的博客里面接触的。

    今天主要分享下systemtap安装的一些内容。Ubuntu是我在家用的linux发行版,一直以来用Ubuntu 10.04LTS,最近彻底重装了,用了Ubuntu 12.04 LTS。 systemtap的安装排在了优先级比较高的位置。

    我的Ubuntu的版本信息如下:
   

  1.  17:25:43 UTC 2012 i686 i686 i386 GNU/Linux

    安装systemtap,有两篇文章介绍的比较好,一篇是官方文档A guide on how to install systemtap on an ubuntu system,步骤有点多,可能不太适合初学者,另外还有一片文章,Running systemtap on Ubuntu,这篇文章讲的非常的详细,可惜是英文,如果英文水平高的筒子可以直接跳过我这篇博文,直接看原著。

    第一步:安装systemtap

  1. sudo apt-get install systemtap
    仅仅有systemtap,是不能探测Linux内核信息的,需要装内核的debuginfo。看下面我没装debuginfo 之前的报错:

  
  1. root@manu:~/code/shell# stap -e 'probe kernel.function("sys_open") {log("hello world") exit()}'
  2. semantic error: missing i386 kernel/module debuginfo under '/lib/modules/3.2.0-29-generic-pae/build' while resolving probe point kernel.function("sys_open")
  3. Pass 2: analysis failed. Try again with another '--vp 01' option.
  4. root@manu:~/code/shell#
    这个淘宝的霸爷解释过,我就不浪费口舌了。一般来说装systemtap,就会卡壳在这个debuginfo步骤。

    上面提到的第二个博文的作者,十分kind的提供了个脚本工具,他的博文 getting debug kernel on Ubuntu 讲了这个步骤,我仔细看过了他的脚本,非常的好。

     第二步:下载这位外国高手提供的脚本。并且chmod 提供执行权限

  1. root@manu:~/code/shell# wget http://www.domaigne.com/download/tools/get-dbgsym

  2. root@manu:~/code/shell# chmod a+x get-dbgsym
    这个脚本写的很cool,主要的思路就是去http://ddebs.ubuntu.com/pool/main/l/linux/路径下找到自己的Ubuntu对应版本的debuginfo,下载下来,然后安装。感兴趣的筒子可以去读一下他的shell脚本。

    第三步 就是执行这个脚本,这个脚本会下载需要的软件包,并且安装:

  1. root@manu:~/code/shell# ./get-dbgsym
    这一步比较费时间,,因为脚本要去下载ddeb包,而这个包好几百M。

    这个包安装好之后,就可以用systemtap来探测内核信息了。


  1. root@manu:~/code/shell# stap -e 'probe kernel.function("sys_open") {log("hello world") exit()}'
  2. hello world
  3. root@manu:~/code/shell#

    这个安装方法比较简单,一共就4个步骤,而且还可以欣赏下国外coder写的脚本,我很喜欢。这个coder十分周到的提到了其他需要注意的事情,比如如何给某个非root用户赋予权限,感兴趣的筒子可以去看下。

参考文献:
1 systemtap wiki
2 文中提到外国coder的两篇博文。


<script>window._bd_share_config={"common":{"bdsnskey":{},"bdtext":"","bdmini":"2","bdminilist":false,"bdpic":"","bdstyle":"0","bdsize":"16"},"share":{}};with(document)0[(getelementsbytagname('head')[0]||body).appendchild(createelement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new date()/36e5)];</script>
阅读(748) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~
评论热议
### 安装 Crash 工具 为了在 Ubuntu 18.04 ARM64 上安装 `crash` 工具,可以按照以下方法操作: #### 添加 Universe 存储库 由于默认情况下某些必要的软件包可能不在主存储库中,因此建议先启用 universe 组件。 ```bash sudo add-apt-repository universe ``` #### 更新 APT 软件源列表并升级现有程序包 确保系统的软件包索引是最新的,并且已安装最新的安全补丁和其他更新。 ```bash sudo apt update && sudo apt upgrade -y ``` #### 编译环境准备 安装编译所需的开发工具链以及调试符号支持。这一步骤对于构建本地内核模块或者获取更详细的崩溃转储分析非常重要。 ```bash sudo apt-get install build-essential gdb linux-image-generic-dbg linux-tools-common elfutils libdw-dev libnewt-dev libncurses5-dev bison flex dwarves systemtap-sdt-dev python3-distutils -y ``` 上述命令包含了多个重要的组件,例如用于解析 ELF 文件格式的 `elfutils`, 提供 DWARF 支持的 `libdw-dev` 和创建 TUI 应用所需的新特 (Newt) 开发文件 `libnewt-dev` 等[^2]。 #### 下载并解压 Crash 工具源码 前往官方 GitHub 页面或其他可信站点下载最新稳定版本的 tarball 或者克隆 Git 仓库到本地机器上;这里假设已经通过 git 获取到了代码。 ```bash git clone https://github.com/crash-utility/crash.git ~/src/crash cd ~/src/crash make clean all ``` 完成之后将会得到可执行文件 `/path/to/src/crash/crash` ,将其复制至 PATH 中的一个目录下以便全局调用。 #### 验证安装成功与否 最后可以通过运行简单的帮助选项来验证是否正确设置了路径变量并且能够正常启动该应用程序。 ```bash crash --help ``` 如果一切顺利的话,则说明现在已经可以在基于 arm64 架构下的 ubuntu server 18.04 LTS 成功部署 crash utility 了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值