系统动态追踪(二)

上一篇我们看到动态追踪的威力,但这里存在一个矛盾点:大部分时候这种动态追踪需要用到debuginfo, 而在生产环境基本没有哪个机器会安装debuginfo。并且debuginfo通常很大, 因为它包含了所有函数的源码、行号、参数等信息。有的商业程序甚至不提供debuginfo,例如Oracle的Hotspot JVM。上面几个原因使得很多时候在生产环境拥有debuginfo不大现实。 那么没有debuginfo的情况下,我们怎么在生产系统进行动态追踪呢?这是此篇需要解决的问题。 基础知识 要回答生产系统如何进行动态追踪,需要简单地了解以下的一些基础知识。由于动态追踪关心的一般是函数相关的探点,所以这里重点介绍函数相关的知识。下面看一个简单的Hello world程序hello.as...
Click to read more ...

系统动态追踪(一)

题外话:近日觉得记性越来越差,刚查过的一些案例过些日子就忘了。 想想好记性确实不如烂笔头。多年前我维护过一个博客,上面写的内容我只须再刷一遍就能记起很多。最有意思的是还能抛砖引玉,这些年内还陆续有朋友发email和我讨论一些相关的内容,我也从他们各不相同的案例上积累到不少经验。这个博客后面因为来了美国荒废了,主要原因还是因为懒,还有一些其它生活和所在公司不开放的原因。对于最后者,近期我感觉可以学学王垠的经验,写一些与工作内容不大相关的案例。 开始了 言归正传,这一系列探讨的是Linux x86_64系统动态追踪。这里系统的定义比较泛,可以是Linux操作系统,Xen hypervisor(当然会有一些东西会追踪不到), MySQL数据库系统或者是Java虚拟机系统。作为大多数上层应...
Click to read more ...