存档

文章标签 ‘systemtap’

Linux Kprobes介绍

2013年3月10日 2 条评论 8,109 次浏览

不得不说printk()函数是一个伟大的调试工具,它几乎能帮助我们在Linux系统的任何位置把我们想要的数据打印出来,但同时这也是一个比较耗时的过程,因为我们得把printk()函数加入到Linux内核源码的对应位置,重新编译模块,如果是内核修改,那么也许还得重启机器。 动态工具Kprobe的出现,使得我们可以在Linux系统的大部分地方都能通过更简便、快速的方法获得更多的内核信息,在前面文章里曾介绍的SystemTap也就是以Kprobe为基石而成的用户命令接口。 Kprobe,简单点说就是允许我们在内核执行到指定的地方时回调一个我们的自定义函数,在这个自定义函数内,我们就可以执行一些内核信息(类似于以前的printk())收集动作,完了之后内核再回去执行它原本的逻辑。 在这里,“内核执行到指定的地方”有一个专门的术语叫做probe(探针),目前有三种类型的probe,分别为: kprobes:内核代码的任何指令处。 jprobes:内核函数的入口处,因此可以很方便的获取到对应内核函数的参数。 kretprobes:内核函数的退出点。 先看个Kprobe实例: /* ... [阅读更多]

使用systemtap调试Linux内核

2013年2月24日 1 条评论 7,189 次浏览

最近在公司看Linux内核的nmi死锁检测功能的实现机制,当然,是因为它变了,所以我才看的,简单来说就是在红帽的某牛提交了一个内核patch:new nmi_watchdog using perf... [阅读更多]

如何追踪函数的完整调用过程

2013年2月5日 2 条评论 10,193 次浏览

何追踪函数的完整调用过程?对于软件编程人员来说,这一个有趣的话题,而在stackoverflow上就恰好有这么一个讨论,本文就对这个讨论里的内容进行一下实际操作与转述。 我们知道两个命令,ltrace和strace,其中ltrace用于追踪记录动态库函数的调用执行,而strace用于追踪记录系统调用函数的调用执行,看示例: #... [阅读更多]

systemtap初试用

2013年2月4日 1 条评论 14,463 次浏览

久闻systemtap工具的大名,之前也断断续续的看过它的介绍,并且利用CentOS发行版自带的systemtap相关命令试用过几次,感觉还算不错。本文将介绍一下systemtap的安装,以及对应用程序的追踪示例,不过,在此之前,先描述一下systemtap的背景知识以及相关资料。 在Solaris系统上,有一个大名鼎鼎的动态跟踪工具DTRACE,这一个相当棒的工具,曾荣获《华尔街杂志》2006技术创新大奖中的金奖,而在Linux上却没有对应的工具,当然,那是以前,因为我们已经知道,现在Linux上有了systemtap。 和ZFS文件系统一样,DTrace一直都因版权问题而无法移植到Linux上,但Oracle(SUN公司被Oracle收购)在2012年2月宣布发布DTrace... [阅读更多]

分类: *nix技术, 跟踪调试 标签: