前一段时间,小编由于工作需要,在Solaris上安装使用了最新的gdb(7.7.1),结果在使用中发现了两个问题:
(1)“set follow-fork-mode child”这个命令不生效,但是在Linux下面是可以的;
(2)64位gdb不能分析32位core dump文件。
小编把这两个问题报给了gdb的维护者,结果是石沉大海,毫无动静。后来小编转念一想,为什么不试着用DTrace自己分析一下呢?说干就干,小编立即动手写脚本开始分析,结果没费多少功夫,就查到了原因。小编觉得这个经历很有趣,就把这个过程记录下来,写成了一篇英文文章:
Use DTrace to diagnose[……]
推荐系列文章:《Hooked on DTrace》
今天小编向大家推荐的是Big Nerd Ranch的工程师Mark Dalrymple写的介绍DTrace的系列文章(操作系统是Mac OS X):《Hooked on DTrace》,文章写得很好,一共有四篇:
http://www.bignerdranch.com/blog/hooked-on-dtrace-part-1/
http://www.bignerdranch.com/blog/hooked-on-dtrace-part-2/
http://www.bignerdranch.com/blog/hooked-on-dtrace-part-3/
http://www.bign[……]
DTrace tricks and tips (3) – 访问程序全局变量
在stackoverflow上有人问如何用DTrace访问程序的全局变量(http://stackoverflow.com/questions/11228352/dtrace-accessing-global-variables-from-application),答案也简单,只需知道全局变量的地址,然后把地址作为指针,按照变量的类型,解引用指针即可。所以问题来了,如何得到全局变量地址?
还是以stackoverflow上问题的代码做例子,并假设编译后生成的可执行文件名为a:
#include <stdio.h> int global_var; void chang[......]
分享一篇文章《Using DTrace to Instrument Your System》
Joyent的工程师Max Bruning在今年的MacIT会议上做了一个presentation:《Using DTrace to Instrument Your System》。这个文档开始讲了一些DTrace的基本概念,然后介绍了如何在OS X上使用DTrace,最后还介绍了火焰图和node.js。感兴趣的同学可以读一下。由于原文是分享在slideshare上的,在大陆访问可能不稳定,我把它分享在百度网盘:http://pan.baidu.com/s/1pJ7D6mn。
DTrace动态变量泄露(dynamic variable drops)问题
在这个月的dtrace-discuss mailing list里,有人提到了动态变量泄露(dynamic variable drops)问题:http://www.listbox.com/member/archive/184261/2014/05/sort/time_rev/page/1/entry/2:5/20140505141710:5BA4F4A2-D481-11E3-ADF7-F8194C58CA13/。总结起来,就是像thread-local和associative array这样的变量,用完以后要记得释放(就是把变量置为0:self->var = 0),否则就会有泄露,这样[……]