1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

使用DTrace解决内存泄露的一个实例

DTrace在查找内存泄露这个令人头疼的问题方面是一个特别好的工具。这不,在前两天的FreeBSD邮件列表里,又利用DTrace解决了内存泄露的一个bug。命令很简单:

# dtrace -n 'dtmalloc::CAM_CCB: {printf("%s", execname); stack();}'

通过stack()就可以看到哪里进行了mallocPatch如下:

diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c
index 85b2ff9..1f7be4f 100644
--- a/sys/cam/[......]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...
1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

FreeBSD系统libdtrace模块中分配内存代码的改动

Pedro Giffuni日前将FreeBSD系统的libdtrace模块中的分配内存代码做了修改(commit ID:https://svnweb.freebsd.org/base?view=revision&revision=296816):以前是malloc一块内存,然后用bzero将这块内存清0;现在统一用calloc函数来完成上述操作。Pedro Giffuni本人的说法是“calloc(3) is faster and occasionally safer than malloc(3) + bzero(3).”。下面就看illumos社区是否会做同样的改动了。[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...
1 Star2 Stars3 Stars4 Stars5 Stars (还没有评分)
Loading...

如何执行DTrace脚本

以下面脚本(hello.d)为例,讲述执行DTrace脚本的方法:

BEGIN
{
  /* This is a C-style comment */
  trace("hello, world");
  exit(0);
}

(1)在命令行运行dtrace -s hello.d命令:

# dtrace -s hello.d
dtrace: script 'hello.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  0      1[......]

阅读全文