一个分享DTrace知识的中文站点--chinadtrace.org上线了!

2014-07-20
阅读 1 分钟
2.3k
经过一段时间的准备,chinadtrace终于有了自己的网站:[链接]。目前所有的文章都已经迁移过去了,欢迎大家继续关注和访问。这个博客不再更新了,再见了segmentfault!

为什么DTrace没有流程控制语句?

2014-07-12
阅读 1 分钟
2.2k
在2008年的DTrace讨论邮件里,我找到了这个话题:“can i use if/else/for/while in dtrace script?”?而针对这一问题,Chip Bennett给出了如下的解释: (1)没有循环语句的原因是:clause作为kernel线程运行时是关中断的,所以一旦循环运行很长时间甚至出现死循环状况,就会给系统带来很大影响; (2)没有if/else语句...

Mac上的10个DTrace脚本

2014-07-07
阅读 1 分钟
5.4k
今天无意中在Brendan的博客上翻到一篇2011年写的的《Top 10 DTrace scripts for Mac OS X》([链接]),虽然年代略显久远,但是写得很详细,大家有兴趣可以看一下。

DTrace tricks and tips (4) - copyin()函数不是跨clause安全的

2014-07-03
阅读 1 分钟
2.3k
Max Burning的这篇文章:《Bruning Questions: How To DTrace poll(2) System Calls》([链接])归根到底的结论就是:copyin()函数所返回的内存空间只在当前clause有效,不能跨clause使用(“copyin() data goes into scratch space which is not saved across clauses.”)。 所以针对下面的代码:

使用DTrace诊断gdb问题

2014-06-28
阅读 1 分钟
3.3k
前一段时间,小编由于工作需要,在Solaris上安装使用了最新的gdb(7.7.1),结果在使用中发现了两个问题: (1)“set follow-fork-mode child”这个命令不生效,但是在Linux下面是可以的; (2)64位gdb不能分析32位core dump文件。 小编把这两个问题报给了gdb的维护者,结果是石沉大海,毫无动静。后来小编转念一想,为...

推荐系列文章:《Hooked on DTrace》

2014-06-18
阅读 1 分钟
2.4k
今天小编向大家推荐的是Big Nerd Ranch的工程师Mark Dalrymple写的介绍DTrace的系列文章(操作系统是Mac OS X):《Hooked on DTrace》,文章写得很好,一共有四篇:

DTrace tricks and tips (3) - 访问程序全局变量

2014-06-07
阅读 2 分钟
2.8k
在stackoverflow上有人问如何用DTrace访问程序的全局变量([链接]),答案也简单,只需知道全局变量的地址,然后把地址作为指针,按照变量的类型,解引用指针即可。所以问题来了,如何得到全局变量地址?

分享一篇文章《Using DTrace to Instrument Your System》

2014-05-31
阅读 1 分钟
3.3k
Joyent的工程师Max Bruning在今年的MacIT会议上做了一个presentation:《Using DTrace to Instrument Your System》。这个文档开始讲了一些DTrace的基本概念,然后介绍了如何在OS X上使用DTrace,最后还介绍了火焰图和node.js。感兴趣的同学可以读一下。由于原文是分享在slideshare上的,在大陆访问可能不稳定,我把它分...

DTrace动态变量泄露(dynamic variable drops)问题

2014-05-25
阅读 1 分钟
2.3k
在这个月的dtrace-discuss mailing list里,有人提到了动态变量泄露(dynamic variable drops)问题:[链接]。总结起来,就是像thread-local和associative array这样的变量,用完以后要记得释放(就是把变量置为0:self->var = 0),否则就会有泄露,这样终究就会用光这些资源。

DTrace tricks and tips (2) - 多核CPU导致DTrace输出乱序问题

2014-05-17
阅读 1 分钟
2.7k
这是因为在多核CPU系统上,DTrace的输出会被缓存到每个CPU的buffer里。这样如果entry的log被缓存到CPU 1 的buffer里,return的log被缓存到CPU 2 的buffer里,而CPU 2 buffer里的log先输出出来,就会出现上述这个情况。可以在log里增加对当前CPU的打印(DTrace 内置变量:cpu),就可以更好地理解这个问题。

DTrace tricks and tips (1) - 打印当前系统时间

2014-05-11
阅读 1 分钟
2.9k
在使用DTrace时,如果想打印当前系统时间,可以借助内置变量walltimestamp。walltimestamp表示的是自从1970年1月1日0时(UTC时间)以来经过的纳秒数,那么如何把它表示成让人一目了然的形式呢?答案是借助printf。脚本如下:

函数尾调用优化(Tail-call Optimization)对DTrace return probe的影响

2014-05-02
阅读 3 分钟
3.2k
今天这个话题要从stackoverflow上的一个帖子([链接])谈起。帖子作者遇到的问题简单地说,就是DTrace输出的getaddrinfo的返回值不对:

DTrace的变量类型

2014-04-28
阅读 2 分钟
2.9k
要想写好DTrace脚本,了解何时选用何种类型变量是非常重要的。在这里,小编推荐DTrace大神Brendan Gregg的文章《DTrace variable types》([链接])。文章很短,值得每个人一读。小编总结了一下,就是选用变量类型的优先级是:

dtrace4linux的最新信息

2014-04-27
阅读 1 分钟
3.2k
Dtrace4linux是一个把DTrace移植到Linux上的开源项目,它的项目主页是:[链接],作者是Paul D. Fox。Paul曾经在stackoverflow上针对dtrace4linux回答过一个很经典的问题([链接]),有兴趣的同学可以去看一下。

DTrace User Guide

2014-04-27
阅读 1 分钟
2.3k
对于新接触DTrace的同学,小编推荐Oracle的文档:DTrace User Guide([链接])。这篇文章只有60多页,但是介绍了很多干货:built-in variables,functions,tracing user processes,speculative tracing等等。相信大家看完后,至少可以入门了。

DTrace微信公众号:chinadtrace

2014-04-26
阅读 1 分钟
3.3k
自从2010年第一次接触DTrace以来,就觉得DTrace是一个很cool的工具,应该是所有在支持DTrace操作系统(Solaris,FreeBSD,Mac OS X)上开发的geek们应该掌握的工具。不过在中国,DTrace似乎不太流行,好像连个讨论区都没有。我很希望在中国有更多的工程师来了解和使用DTrace。所以我申请了一个微信公众号dtrace(微信号...