问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

systemtap怎么调试脚本程序

发布网友 发布时间:2022-05-01 16:07

我来回答

1个回答

热心网友 时间:2022-04-11 23:46

其实下面要说的没多少硬货,算是个自己这些日子使用春哥写的那几个systemtap脚本调优的经验总结吧。
一、systemtap安装
因为一直在ubuntu上使用,所以安装很简单 sudo apt-get install systemtap,源码安装的话请参考这篇文章:http://www.cnblogs.com/hazir/p/systemtap_introction.html 中的方法一。

二、内核调试信息
不用跟踪内核态性能大概也不需要,不过保不齐会用到所以我也把内核调试信息搞上了。对于ubuntu这种发行版内核来说好处是官方已经提供了(URL:http://ddebs.ubuntu.com/pool/main/l/linux/),根据自己的内核(uname -a 查询)挑选版本。 如我的是Linux ubuntu 3.13.0-32-generic 那么对应的就是:linux-image-3.13.0-32-generic-dbgsym_3.13.0-32.57_amd64.ddeb。
下载后用 dpkg -i linux-image-3.13.0-32-generic-dbgsym_3.13.0-32.57_amd64.ddeb 安装。

三、Hello Systemtap!
上面这些完成以后可以使用命令:sudo stap -ve 'probe begin { log("hello Systemtap!") exit() }' 来测试是否安装成功。如果成功的话会有类似下面的输出:
春哥的nginx <wbr>systemtap调试脚本简单介绍

四、nginx-systemtap-toolkit
进入正题,这个就是主要介绍的章亦春大神写的systemtap nginx调试的系列脚本了(URL:Github地址),提供了活动请求的查询、ngx_lua模块的当前lua堆栈查看、pcre模式串/运行时间分析、C堆栈采样等等炸裂功能。
首先介绍下C堆栈采样这个脚本,结合Brendan Gregg大神写的FlameGraph tools(URL:https://github.com/brendangregg/FlameGraph),可以画出功能实用、看着酷炫的火焰图。如图:春哥的nginx <wbr>systemtap调试脚本简单介绍
这个东西的原理就是在程序运行的时候每隔一定的时间对指定进程的C堆栈进行采样,将当前各栈帧的函数名保存起来。因为采样时间是恒定的,所以最后的结果上如果一个函数占用cpu时间越长,那么得到的采样次数也就越多,最后反映到火焰图上的横轴长度就越长。另外颜色深浅其实没什么含义,只是方便查看。
使用方法:
1、首先确定编译的代码要带有调试i信息,以便调试脚本可以获得具体的代码信息。如nginx就要加上--with-debug开关。
2、其次要调优的进程已经启动,并且获得其pid,对于nginx这种多进程的程序,需要找到一个worker进程的pid,所以如果是开发环境调优的话,可以考虑使用单进程跑nginx。
3、命令sudo ./nginx-systemtap-toolkit/sample-bt -p 1147 -u -t 20 > trace.txt
其中-p 指定进程的pid
-u 追踪用户态的调用堆栈(也可以使用-k追踪程序运行期间在内核态的堆栈)
-t 脚本的运行时间,达到时间之后脚本自动停止,将堆栈信息输出,单位为秒
启动后会有类似的信息:
WARNING: Tracing 1147 (/home/kawaru/nginx/sbin/nginx) in user-space only...
提示已经开始跟踪,这是可以用ab等等东西打点流量,等20秒之后会显示:
WARNING: Time's up. Quitting now...(it may take a while)
systemtap运行SystemTap

2. 直接从标准输入读取并运行脚本,指令为:stap [选项] - 3. 在命令行中运行预先定义的脚本,命令格式为:stap [选项] -e 脚本 4. 对于已经设置为可执行的脚本文件(通常第一行包含#!/usr/bin/stap),可以直接运行,如:./脚本文件名。若需中止,使用"Ctrl+C"。SystemTap的选项功能丰富,随...

android auto

您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇到的疑难杂...

SystemTap工具的使用基础

上例中看到找到了syscall.Mount函数,并且把它的所有参数和参数类型都打印了出来。 后面可以在stap脚本中,这个函数的上下文里直接使用这些参数,例如通过$source可以访问到参数source systemtap支持print()和printf()函数,其中printf使用语法和c语言一致。支持%s,%d,%x格式 在systemtap里凡是以$开头的...

stapsd是什么意思?

首先,下载并安装SystemTap,并将要运行的脚本传输到要监控的系统中。接下来,启动stapsd守护进程,这样可以避免频繁启动检测器程序的时间开销。最后,通过运行SystemTap脚本,获取所需的性能调试信息。需要注意的是,为了保证数据的准确性,应该根据需要对采样频率和采样时间进行合理的配置。

systemtap简介

SystemTap与DTrace技术相似,后者源于Sun Solaris中的D编程语言。DTrace使用探针和操作脚本来跟踪行为,例如,一个简单的脚本可能计算每个进程发出的系统调用次数,如清单1所示。DTrace在Solaris中占据重要地位,其开源特性使得它被移植到了FreeBSD系统中。另一个内核追踪工具是ProbeVue,由IBM为AIX操作系统开...

掌握Linux内核25种不可或缺的调试工具linux内核调试工具

1.SystemTap:SystemTap是一种探查故障和优化Linux内核性能的调试器,使用它可以方便地构建内核统计数据。它可以运行通用和复杂的内核脚本,用于监测内核在指定时间段的行为和性能。2.perf:Perf是linux内核性能分析器,可用于跟踪内核中的程序性能,如运行时间、系统调用、虚拟内存和内核锁定等。它可以随时间...

性能优化工具

使用 SystemTap 绘制火焰图主要包括以下步骤:首先使用 perf 采集系统事件,通常会默认采集 CPU 周期并记录调用栈。采集完成后,数据需要通过 SystemTap 的解析工具进行整理。使用 stackcollapse-perf.pl 脚本将解析出的符号进行折叠,简化火焰图的显示。最后,将整理后的信息用火焰图工具绘制成直观的图形。在...

软件调试方法(常用的软件调试技术)

通用工具,比如Unix命令行工具、跟踪(考虑下strace、dtrace和systemtap)工具和版本控制系统。InfoQ:程序员做什么能够提高调试效率?Spinellis:首先要为调试成功做好准备。让自己相信问题将会得到解决,留出足够的时间用于调试,不要分心,要坚持不懈,必要的时候,留待第二天解决。重要的是,要不断地在环境...

如何选择一个 Linux Tracer

最近,我发布了一些工具systemtap-lwtools来演示如何在没有内核诊断信息的情况下使用SystemTap。LTTng:我只花了一点时间,还不足以发表任何内容。ktap:我的网页ktap实例包含一些早期版本的单行小程序和脚本。dtrace4linux:我在系统性能一书中给出了一些实例,并曾经开发了一些小的修复程序,如timestamps。OL DTrace:...

程序员精进之路:性能调优利器--火焰图

使用systemtap生成火焰图,需要安装相关依赖,编写脚本并将其编译为内核模块,然后通过staprun命令运行。通过实际案例,如Apache APISIX的性能瓶颈和nginx的互斥锁问题,火焰图展示了如何在实际问题中运用。最后,作者提醒,虽然动态追踪工具如perf和systemtap对后台服务影响较小,但在不同内核版本或进程变化时,...

大型网站数据库系统,怎么连接那么多并发数量的?

按我个人经验有以下几种方法:1.在连接数据库的时候可以优化,使用连接池。主要就是不要频繁地创建,销毁连接。这是很费时的一个操作。因此,使用连接池来代替普通的建立连接操作,能提高并发度。2. 使用缓存技术。并不是每次都需要去数据库里面查询的,我们其实可以把前一次的查询结果放在内存里,如果...

调试程序是指对程序进行什么 怎么调试shell脚本 debug怎么调试程序 脚本怎么调试 按键精灵怎么调试脚本 程序调试的基本步骤 程序调试的任务是什么 程序的调试是什么意思 禁用脚本调试有什么用
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机贷审核已经通过,等待放款要多久? ug哪个公司产品 油酥烧饼怎么做简单又美味? 北京忠信博达建设发展有限公司怎么样? 会与能的区别是什么? 帎帎的意思、基本信息 BT3 Spoonwep2破解无线问题 我用bt的spoonwep2破解了一个wep密码但是不会转换 ...教我无线路由器破解教程 不胜感激!bt3+spoonwep2 或其他 求BackTrack3和spoonwep2这两款软件! 怎么在网上预约挂号湖北省中医院? 孕早期能吃韭菜花吗 处女座男生和狮子座女生 的爱情会有结果吗? 谁知道处女男和狮子女在一起会有什么结果 90年处女座男和92年狮子座女配吗?有缘吗?越详细越好 中医院预约挂号怎么挂号? nginx 编译时关闭debug.有什么好处和坏处 狮子座女和处女座男相配吗? 处女男和狮子女配不配 处女男与狮子女 马克西姆咖啡机是国产 谁知道兄弟7180dn加粉后,老显示更换墨盒,怎样才能清除,打印 espresso的CREMA什么样的颜色好啊 狮子女和处女男配吗? 处座男为什么会喜欢狮子女? crema calmante是什么意思 用摩卡壶怎么才能煮出一层厚厚的crema? 关于西安公积金偿还商业银行住房按揭贷款 黑咖啡为什么很少出现crema? crema idratante corpo,不是英语,啥意思啊 请问这是浮粉还是卡粉,怎么解决?谢谢! 微信好友被删了,自己又不知道他的了。怎么找回? 从古代到现代军队练习拳术的历史?希望尽可能全面。重点是拳术。谢谢... 清朝时的重要事件 汉族人的习俗 买保险到期后怎么处理 合同到期保险怎么处理 酸豆角起白色的东西了还能吃吗,不是很多 放了五年的干豇豆还能吃吗? 交通事故没有处理完保险到期了怎么办 中国平安保险到期后怎么办? 泡好的干豇豆放在冰箱里三四天还能吃吗 豇豆干还能不能做泡菜?晒到变色的那种。 煮熟的干豇豆汤都是绿色的,还能吃吗 MySQL 怎么用SQL语句写:按学号列出每个学生所选修课程中最高分的课程名称及其分数 可乐优品怎么看QQ值多少钱? 可乐优品王者荣耀帐号估价找不到自己的区怎么办? 17408936这个qq号码好不好? 手机回收哪个平台靠谱? 小米盒子vip怎么取消