SystemTap知识(二)

Unbuntu安装systemtap:

http://www.cnblogs.com/hdflzh/archive/2012/07/25/2608910.html

1 更新源到http://mirror.ubuntu9.com/topmirror/sourceslist/all/54772423e19231bbb722a69fd878df28.list

2 apt-get install systemtap

3 apt-get install systemtap-sdt-dev

4

cdcdHOME

$ sudo apt-get install dpkg-dev debhelper gawk

apt-get install ncurses-dev

$ mkdir tmp

$ cd tmp

sudoapt−getbuild−dep−−no−install−recommendslinux−image−sudoapt−getbuild−dep−−no−install−recommendslinux−image−(uname -r)

apt−getsourcelinux−image−apt−getsourcelinux−image−(uname -r)

$ cd linux-2.6.31 (this is currently the kernel version of 9.10)

$ fakeroot debian/rules clean

$ AUTOBUILD=1 fakeroot debian/rules binary-generic skipdbg=false

$ sudo dpkg -i ../linux-image-debug-2.6.31-19-generic_2.6.31-19.56_amd64.ddeb

https://gist.github.com/shino/30c6745bb7a5db6fdce0/raw/e4d191fed1d44c038020c2f2e897bd08b513fe8e/systemtap_ubuntu12.10_memo.rst

http://sourceware.org/systemtap/wiki/SystemtapOnUbuntu

出现错误:

/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/stapXuHMle/stap_f534cd5578062befad3b2b49cf30135c_2471.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: ?.truct hlist_head?.has no member named ?.ext?

In file included from /tmp/stapXuHMle/stap_f534cd5578062befad3b2b49cf30135c_2471.c:61:0:

/usr/share/systemtap/runtime/stat.c: In function ?.stp_stat_get?.

/usr/share/systemtap/runtime/stat.c:213:2: error: ?.pu_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: ?.pu_possible_map?.undeclared (first use in this function)

cc1: all warnings being treated as errors

解决:

http://blog.sina.com.cn/s/blog_820c67660101cgke.html

测试是否成功:

stap -e 'probe kernel.function("vfs_read") { printf("%s \n", $$vars)}' -vv

用户域的探针

Systemtap最初是用于内核态的探针的,但是基于用户态的探针能定位解决用户的程序问题。Systemtap0.6能往用户态的进程中放入探针。SystemTap能支持在用户态的进程中的某个方法的入口和出口的地方放入探针。

用户态Systemtap的探针要求安装utrace内核扩展。utrace的介绍在:

http://sourceware.org/systemtap/wiki/utrace

使用命令来判断当前系统是否安装了utrace

grep CONFIG_UTRACE /boot/config-`uname -r`

如果支持用户态探针,会输出:

CONFIG_UTRACE=y

用户态Systemtap也需要uprobes内核模块。如果没有安装的话,你在运行需要uprobes模块的时候会出现下面的问题:

用户态的事件

用户态事件以process开始,有下面几种形式

PATH是可执行程序的路径

process("PATH").function("function")

process("PATH").statement("statement")

process("PATH").mark("marker")

process.begin

process.thread.begin

process.end

process.thread.end

process.syscall

时间: 2024-10-04 16:01:08

SystemTap知识(二)的相关文章

Remoting编程知识二

编程 Remoting高级知识 一. 如何使用IIS作为激活代理 .NET Remoting和DCOM之间的一个区别是前者不支持自动运行的服务器进程.需要人工启动服务器进程来注册用来远程激活的类和监听请求.而对于DCOM,当远程客户端调用CoCreateInstanceEx或者其他激活API时,会自动运行服务器进程. .NET remoting 提供了两种方法来避免人工启动服务器.第一个是将服务器应用程序当做一个服务来实现.可以编写一个从 System.ServiceProcess.Servic

C# 基础知识 (二).独特的知识及用法篇

在C#中有一些我自己认为比较独特的知识点,这些知识点是我经常使用的知识,但对它们的了解还是比较少的,所以通过查找资料学习,总结了这些独特的知识点并简单叙述,希望对大家有所帮组!其中主要有:var关键字.try..catch..finally.foreach语句.ArrayList类.#region..#endregion等知识点. 一.var关键字 隐含类型,使用var来声明任意类型的局部变量.在C#中它仅仅是一个关键字,不代表一种新的类型,它仅是负责告诉编译器:该变量需要根据初始化表达式来推断

[Python] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

        通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Python处理txt汉字文字.二维列表排序和获取list下标.希望文章对你有所帮助或提供一些见解~ 一. list二维数组排序         功能:已经通过Python从维基百科中获取了国家的国土面积和排名信息,此时需要获取国土面积并进行排序判断世界排名是否正确.         列表基础

SystemTap知识(一)

SystemTap是一个系统的跟踪探测工具.它能让用户来跟踪和研究计算机系统在底层的实现. 安装SystemTap需要为你的系统内核安装-devel,-debuginfo,-debuginfo-common包 使用下面的repo可以进行debuginfo的安装 [debuggery] name=CentOS-$releasever - DebugInfo baseurl=http://debuginfo.centos.org/releasever/releasever/basearch/ pri

Java基础知识二十九

Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态. 方法:方法就是行为,一个类可以有很多方法.逻辑运算.数据修改以及所有动作都是在方法中完成的. 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定. 如果你想学

Extjs4快速上手二——基础知识(二)

原文 http://www.cnblogs.com/good-temper/archive/2013/04/07/3003270.html 事隔几天继续开写,由于水平所限理论的东西写起来的确很费劲,现在就将就着写吧,等后边的实践部分或许会好点.今天主要讲讲Extjs4的MVC. 1.1  谈谈MVC MVC,这个概念或许算是当下最流行的设计模式,java中的SSH.SpringMVC,.net的MVC框架,php的smarty等,哪门语言不来个MVC框架都不好意思说自己是主流的.下边是贴过来的一

iOS编程中的音频知识(二):那么多种格式我应该用哪一个?

iPhone支持不少格式,比如AAC,HE-AAC,AMR,IMA4等等,你可以在以下网址看到比较全的格式和简要介绍: http://www.raywenderlich.com/69365/audio-tutorial-ios-file-data-formats-2014-edition 这看起来是一条长长的单子,但是实际上仅仅少数的格式被推荐使用.要想知道该用哪些格式,你必须首先牢记如下几条: 你可以播放线性PCM,IMA4以及少数其他未压缩或简单压缩的格式更快一些并且可以同时播放没有问题.

《智能制造时代的研发智慧:知识工程2.0》一第3章 隐性知识的显性化

第3章 隐性知识的显性化 知识分为隐性知识和显性知识.通常,以书面文字.图表.公式.流程和模型等表述的知识称为显性知识:在行为中所蕴含的未被表述的知识称为隐性知识.隐性知识是高度个人化的知识,具有难以规范化的特点,因此不易传递给他人.它深深植根于行为本身和个体所处环境,包括个体的思维模式.信仰观点和心智模式等.隐性知识显性化是知识工程中的一项难题,也是绕不开的课题,因为它是知识工程的基础和起点.一.知识螺旋与显性化 1.知识转化螺旋 显性知识和隐性知识的相互转化有四种类型(也称知识螺旋),可实现

C#基础知识—父类和子类的关系

基础知识一: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication2 { public class ParentClass { public ParentClass() { } public string NamePropety { get; set; } public string GetNa