systemtap系列之内核系统诊断使用方法

SystemTap是一种用于监控和跟踪Linux内核运行时操作的工具,它利用Kprobes API动态安装。通过测试脚本`stap -ve 'probe begin { log("hello world") exit() }'`检查系统是否支持SystemTap。如果不支持,可通过`yum install systemtap`安装。SystemTap的基本流程包括脚本解析、内核模块构建和staprun、stapio实用程序的协调工作。SystemTap脚本由探针和执行代码块组成,可用于系统调用统计、网络包长度监控等诊断任务。
摘要由CSDN通过智能技术生成

systemtap系列之系统诊断

SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编程接口(API)来实现该目的

SystemTap 与一种名为 DTrace 的老技术相似,该技术源于 Sun Solaris 操作系统。

测试内核看它是否支持 SystemTap:

stap -ve ‘probe begin { log(“hello world”) exit() }’

如果不支持就安装一下,yum install systemtap就好了,缺什么就安装什么,光盘自带了。如果出现如下错误:semantic error: missing x86_64 kernel/module debuginfo [man warning::debuginfo]:答:yum install kernel-debuginfo 安装内核debug信息。

SystemTap 用于检查运行内核的两种方法是 Kprobes 和 返回探针。但是理解任何内核的最关键要素是内核的映射,它提供符号信息(比如函数、变量以及它们的地址)。有了内核映射之后,就可以解决任何符号的地址,以及更改探针的行为。

1.SystemTap 的基本流程

SystemTap 的基本流程,涉及到 3 个交互实用程序和 5 个阶段。流程首先从 SystemTap 脚本开始。您使用 stap 实用程序将 stap 脚本转换成提供探针行为的内核模块。stap 流程从将脚本转换成解析树开始 (pass 1)。然后使用细化(elaboration)步骤 (pass 2) 中关于当前运行的内核的符号信息解析符号。接下来,转换流程将解析树转换成 C 源代码 (pass 3) 并使用解析后的信息和 tapset 脚本(SystemTap 定义的库,包含有用的功能)。stap 的最后步骤是构造使用本地内核模块构建进程的内核模块 (pass 4)。
有了可用的内核模块之后,stap 完成了自己的任务,并将控制权交给其他两个实用程序 SystemTap:staprun 和 stapio。这两个实用程序协调工作,负责将模块安装到内核中并将输出发送到 stdout (pass 5)。如果在 shell 中按组合键 Ctrl-C 或脚本退出,将执行清除进程,这将导致卸载模块并退出所有相关的实用程序。
在这里插入图片描述
从内核态/用户态来了解如下:<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值