首页 文章 精选 留言 我的

精选列表

搜索[ebpf],共420篇文章
优秀的个人博客,低调大师

eBPF监控工具bcc系列三自定义工具trace

上篇中是通用的直接可用工具。 trace工具可以指定跟踪函数并显示,可控制其输出格式来显示函数参数和返回值。 例如跟踪文件拥有者的属性更改,也就是跟踪三个文件系统调用chown,fchown,lchown。使用如下: trace.py 'p::SyS_chown "file = %s, to_uid = %d, to_gid = %d, from_uid = %d", arg1, arg2, arg3, $uid' 'p::SyS_fchown "fd = %d, to_uid = %d, to_gid = %d, from_uid = %d", arg1, arg2, arg3, $uid' 'p::SyS_lchown "file = %s, to_uid = %d, to_gid = %d, from_uid = %d", arg1, arg2, arg3, $uid' 例如跟踪非主动上下文切换。 trace.py -p 1134138 't:sched:sched_switch (args->prev_state == TASK_STATE_MAX || args->prev_state == 0)' 跟踪系统中所有exec调用 # trace 'sys_execve "%s", arg1' 其中sys_execve是内核函数,%s表示打印字符串,这个被复制为arg1就是程序的入参。 例如跟踪系统读操作read,所读大小大于20000(这个参数可以通过man read查看是在第三个位置上),所以跟踪函数如下: trace 'sys_read (arg3 > 20000) "read %d bytes", arg3' 还可以跟踪用户层函数,例如跟踪bash上readline脚本,并输出返回值,可以如下书写 trace 'r:bash:readline "%s", retval' 其中r表示retprobe是返回探针。 跟踪读写失败的命令 trace 'r:c:read ((int)retval < 0) "read failed: %d", retval' 'r:c:write ((int)retval < 0) "write failed: %d", retval' -T 1. 内核tracepoints 还可以跟踪内核的tracepoints,例如跟踪block:block_rq_complete的tracepoint,并打印多少扇区被传输。 trace 't:block:block_rq_complete "sectors=%d", args->nr_sector' -T 如果不清楚跟踪点的数据结构格式,可以使用tplist工具来获得,例如 tplist -v block:block_rq_complete 得到数据结构后就可以用做参数来获取nr_sector了。 2. 第三方库 越来越多高级库支持探针,就像内核tracepoint一样可以用来被跟踪。 例如跟踪pthread_create函数 trace 'u:pthread:pthread_create "%U", arg3' -T -C 其中%U表示将arg3解析成用户层符号。同样,内核的是%K. 现在Ruby,Node,OpenJDK都支持。 跟踪ruby示例: trace 'u:ruby:method__entry "%s.%s", arg1, arg2' -p $(pidof irb) -T 跟踪共享库函数如下: trace.py 'r:/usr/lib64/libtinfo.so:curses_version "Version=%s", retval' 3. 高级过滤 跟踪open,同时指出其打开的文件名字为test.txt trace 'p:c:open (STRCMP("test.txt", arg1)) "opening %s", arg1' -T trace 'p::SyS_nanosleep(struct timespec *ts) "sleep for %lld ns", ts->tv_nsec' 跟踪指定进程的指定函数,使用-p参数,如下: trace -p 2740 'do_sys_open "%s", arg2' -T

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册