1 Star2 Stars3 Stars4 Stars5 Stars (1评分, 平均分: 5.00)
Loading...
Featured post

建立讨论tracing工具的邮件列表

有时我会在公众号后台收到关于使用tracing工具的问题。说实话,我的答案不一定是对的或最优的,所以就想建立一个邮件列表,这样大家都可以看到问题,并参与讨论。另外,邮件列表的一个好处就是保存文档比较好,这样日后查阅起来比较方便。我不确定会有多少人会加入,所以周四就在公众号上问了一下,还是收到了一些响应,那就建一个吧。

其实,目前所有的工具都有专门的邮件列表,但都是英文的。那我想就建立一个使用中文讨论的邮件列表吧。讨论的话题就是所有在工作中使用的tracing工具,不仅限于DTracesystemtap, perf_eventsLTTng等等都可以。欢迎所有对tracing工具感兴趣的朋友[……]

阅读全文

1 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 5 (1评分, 平均分:5.00 )
Loading...

DTrace支持从DWARF数据中获取函数信息

Oracle工程师Alan Coopersmith的社交账号了解到,在最新的Oracle Solaris 11.4中,DTrace可以从DWARF数据中获取函数信息了:

Capture

用户可以使用uresolve选项指定用户地址空间(user address)的格式。当uresolve=basename时,可以把地址和源代码文件以及行号关联起来。这个功能要求在编译程序时指定-g选项,只有这样才会产生DWARF格式的调试信息。具体的描述请参考这里:https://docs.oracle.com/cd/E37838_01/html/E61035/gqsfh.html#scrolltoc。[……]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (1评分, 平均分: 5.00)
Loading...

DTrace中的progenyof()函数

关于progenyof()函数的介绍

int progenyof(pid_t pid)

progenyof returns non-zero if the calling process (the process associated with the thread that is currently triggering the matched probe) is among the progeny of the specified process ID.

也就是当前触发probe的进程是progenyof()参数pid的“子孙进程”,progenyof()返回非0值;反[……]

阅读全文

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

DTrace脚本运行时参数

Shell脚本类似,DTrace脚本也可以接收运行时参数:$0扩展为脚本名,$1扩展为第一个参数,$2扩展为第二个。。。Macro Arguments文档提供了一个tracewrite.d例子:

#!/usr/sbin/dtrace -s

syscall::write:entry
/pid == $1/
{
}

需要注意的是如果在脚本中使用了$1$2这些参数,在执行脚本时一定要提供这些参数:

# ./tracewrite.d 123

否则直接运行脚本就会报出如下错误:

# ./tracewrite.d
dtrace: failed to compile sc[......]

阅读全文

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

“dynamic variable drops”错误解析

DTrace中关联数组(associative array)所占据的内存容量是由可调节参数dynvarsize决定的。由于每次DTrace脚本运行时,内存都会根据dynvarsize分配好。因此一旦耗尽,就会报出“dynamic variable drops”的错误。以下列程序为例:

dtrace -n 'int t[int]; tick-1ms { t[timestamp] = timestamp }'  

运行结果如下:

# dtrace -n 'int t[int]; tick-1ms { t[timestamp] = timestamp }'
dtrace: des[......]

阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (1评分, 平均分: 5.00)
Loading...

DTrace脚本使用选项时需要注意的问题

DTrace可以通过-x指定编译或运行时的选项。以下列命令为例:

# dtrace -n 'syscall::write:entry /pid == $target/ { printf("Written %d bytes\n", arg2); }' -c "dd if=/dev/zero of=/dev/null count=1"
dtrace: description 'syscall::write:entry ' matched 2 probes
1+0 records in
1+0 records out
512 bytes transferred in 0.00003[......]

阅读全文