A DTrace
one liner is a simple invocation of the dtrace(1)
command
that can be used to find out something about the system being traced.
One liners can be general or specific to the underlying operating
system, depending on the provider being used or the data to be
extracted. One liners that are expected to work across all operating
systems are included in this README
file while those specific to
various operating systems and software are kept in their own files.
dtrace -l | grep foo
dtrace -l | awk '{ print $2 }' | sort | uniq -c | sort -n
dtrace -l -P syscall
dtrace -lv syscall::write:entry
dtrace -n 'syscall::open*:entry { printf("%s %s", execname, copyinstr(arg0)); }'
dtrace -n 'syscall:::entry { @[execname] = count(); }'
dtrace -n 'syscall:::entry { @[probefunc] = count(); }'
dtrace -n 'syscall:::entry /pid ## 123/ { @[probefunc] = count(); }'
dtrace -n 'syscall:::entry /execname ## "nginx"/ { @[probefunc] = count(); }'
dtrace -n 'syscall:::entry { @[pid, execname] = count(); }'
dtrace -n 'syscall::read:entry { @[execname] = quantize(arg2); }'
dtrace -n 'syscall::read:return { @[execname] = quantize(arg1); }'
dtrace -n 'syscall::read:entry { self->ts = timestamp; } syscall::read:return /self->ts/ {
@[execname, "ns"] = quantize(timestamp - self->ts); self->ts = 0; }'
dtrace -n 'syscall::read:entry { self->ts = timestamp; } syscall::read:return /self->ts/ {
@[execname, "ms"] = lquantize((timestamp - self->ts) / 1000000, 0, 1000, 5); self->ts = 0; }'
dtrace -n 'syscall::read:entry { self->ts = vtimestamp; } syscall::read:return /self->ts/ {
@[execname, "ns"] = quantize(vtimestamp - self->ts); self->ts = 0; }'
dtrace -n 'syscall::*read*:entry /execname ## "nginx"/ { @[probefunc] = count(); }'
dtrace -n 'syscall::pread:return /execname ## "nginx"/ { @ = quantize(arg1); }'
dtrace -n 'syscall::*accept*:return { @[execname] = count(); }'
dtrace -n 'syscall::*connect*:return { @[execname] = count(); }'
dtrace -n 'syscall::pread:return /execname ## "nginx"/ { @["rval (bytes)"] = quantize(arg1); }'
dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'
dtrace -n 'proc::: { @[probename] = count(); }'
dtrace -n 'profile-997 { @[stringof(curthread->td_name)] = count(); }'
dtrace -n 'profile-997 /!(curthread->td_flags & 0x20)/ { @[stringof(curthread->td_name)] = count(); }'
dtrace -n 'profile-99 /arg0/ { @[stack()] = count(); }'
dtrace -n 'profile-99 /arg1/ { @[execname, ustack()] = count(); }'
dtrace -n 'ip::: { @[probename] = count(); }'
dtrace -n 'udp::: { @[probename] = count(); }'
dtrace -n 'tcp::: { @[probename] = count(); }'
dtrace -n 'tcp:::accept-established { trace(args[3]->tcps_raddr); }'
dtrace -n 'tcp:::accept-established { @[args[3]->tcps_raddr] = count(); }'
dtrace -n 'tcp:::connect-established { @[args[3]->tcps_raddr] = count(); }'
dtrace -n 'tcp:::send { @[args[2]->ip_daddr] = count(); }'
dtrace -n 'tcp:::receive { @[args[2]->ip_saddr] = count(); }'
dtrace -n 'tcp:::send { @[args[2]->ip_daddr] = quantize(args[2]->ip_plength); }'