https://phpor.net/blog/post/3471

写在前面:

systemtap依赖的debuginfo可以从这里(http://debuginfo.centos.org/6/x86_64/)找到,如果幸运的话,你可以直接yum install kernel-debuginfo kernel-debuginfo-common来安装

话说systemtap是一个非常强悍的linux调试工具,但是似乎并不是特别的常用,今天尝试用了一下,确实有一些心得。

安装:

1
yum install systemtap

然后就有systap命令了,弄个脚本试试跑跑吧:

1
stap -e 'probe begin { log("hello world") exit() }'

有错误了:

1
2

Checking "/lib/modules/2.6.32-431.el6.x86_64/build/.config" failed with error: 没有那个文件或目录
Incorrect version or missing kernel-devel package, use: yum install kernel-devel-2.6.32-431.el6.x86_64

大致如上,可能版本号有所差异;好歹有提示,那就照做;不过,可能你确实已经安装了对应版本的kernel-devel; 你们不防rpm -ql kernel-devel 看看安装到哪里了,如果是 /usr/src/kernels/2.6.32-431.el6.x86_64 那么不妨执行:

1
ln -s /usr/src/kernels/2.6.32-431.el6.x86_64 /lib/modules/2.6.32-431.el6.x86_64/build

其实可以这样:

1
stap-prep

该命令可以帮你安装需要的依赖,主要是kernel-devel 和 kernel-debuginfo; 关键是要安装指定的版本,版本错了不行,如果使用的是本地的yum源,可能找不到指定的版本号的包,这样可以修改为使用官方的yum源,这可能是一个比较慢的过程,因为kernel-debuginfo 大小可能超过1G;单从这个来看,该工具的使用成本还是不小的; 也很有可能你配置了debuginfo的yum源,但是没有enable,可以在yum时候临时enable一下,eg:

1
yum --enablerepo=*-debuginfo install kernel-debuginfo-3.10.0-327.13.1.el7.x86_64

安装完后再次执行:

1
stap -e 'probe begin { log("hello world") exit() }'

果然有hello world输出,再来一个 profile.stp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

global syscalllist
probe begin {
printf("System Call Monitoring Started (10 seconds)...\n")
}
probe syscall.*
{
syscalllist[pid(), execname()]++
}
probe timer.ms(10000) {
foreach ( [pid, procname] in syscalllist ) {
printf("%s[%d] = %d\n", procname, pid, syscalllist[pid, procname] )
}
exit()
}

使用场景

  1. 看看哪个进程在查询dns
    dns.stp:

    1
    2
    3
    4
    5

    probe udp.sendmsg {
      if ( dport == 53 ) {
        printf ("PID %5d (%s) sent UDP to %15s 53\n", pid(), execname(), daddr)
      }
    }

参考资料:

  • http://www.ibm.com/developerworks/cn/linux/l-systemtap/
  • https://sourceware.org/systemtap/wiki/SystemtapOnFedora
  • http://blog.sina.com.cn/s/blog_5311ad2d0102v9gd.html
  • systemtap tapset reference:
    • el6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/SystemTap_Tapset_Reference/
    • el7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/SystemTap_Tapset_Reference/
  • systemtap安装:http://www.cnblogs.com/hazir/p/systemtap_introduction.html
  • nginx-systemtap-toolkit:https://github.com/openresty/nginx-systemtap-toolkit
  • stap++:https://github.com/openresty/stapxx
  • FlamgGraph tools:https://github.com/brendangregg/FlameGraph
  • http://webcave.us/?p=341

转载于:https://www.cnblogs.com/zengkefu/p/6372253.html

systemtap初体验相关推荐

  1. systemtap PHP,systemtap初体验

    写在前面: systemtap依赖的debuginfo可以从这里(http://debuginfo.centos.org/6/x86_64/)找到,如果幸运的话,你可以直接yum install ke ...

  2. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  3. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  4. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  5. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  6. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  7. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  8. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  9. Spring环境搭建,IoC容器初体验~

    由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...

  10. 来自新手Banana Pi香蕉派初体验

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 一段时间来对有强大的技术支持和完善的社区的Raspberry Pi很感兴趣,本想入一片学习学习,但转念一想Raspb ...

最新文章

  1. J2EE从servlet开始
  2. 大连二本的学计算机专业的大学,高考成绩差:这9所“二本大学”的计算机专业不错!值得报考!...
  3. python从小到大的顺序输出-python从小到大的顺序输出
  4. PHP 函数dirname()使用实例
  5. tomcat的简单认识
  6. 前端框架-Bootstrap
  7. c# 睡眠3秒_C#中的闭包和意想不到的坑
  8. 面向对象设计与构造第一次总结作业
  9. 数据结构之二叉树:二叉查找树基本功能,Python代码实现——10
  10. mysql的存储引擎详解_MySQL常见存储引擎详解
  11. 中移4G模块-ML302-OpenCpu开发-(固件编译和烧录)
  12. vRealize Operations Manager 安装部署
  13. 关于python的垃圾回收机制_Python中的垃圾回收机制
  14. 如何在SQL Server中使用级联删除?
  15. 6.2.6 String_Number
  16. 用uniapp做的一个在线简历,可以发布成为微信小程序,给面试加分
  17. [通信原理]关于QPSK信号包络起伏问题的研究
  18. 【零基础一起学习FPS游戏Unity3D手机游戏开发】第1章 准备工作
  19. c# 爬网教程_Python Web爬网教程
  20. python实现学生座位表排表

热门文章

  1. oracle建立数据库的步骤,Oracle手工创建数据库的步骤
  2. Linux命令----系统目录结构
  3. JQuery实用技巧--学会你也是大神(1)——插件的制作技巧
  4. 数字电路与系统-知识点2
  5. [译] 如何用 Android vitals 解决应用程序的质量问题
  6. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  7. 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条实现“理想”游戏进度条!...
  8. java List 排序 Collections.sort()
  9. DanmuManager 一个简单的弹幕工具
  10. rancher的使用感受以及与k8s的对比