One-Liners and Scripts
https://wiki.freebsd.org/DTrace/One-Liners
Capture Stacks
For use with Flame Graph.
# Capture user-level stack at 197 Hz for 60 seconds
sudo dtrace -x ustackframes=100 -n 'profile-197 /execname == "python3.9"/ { @[ustack()] = count(); } tick-60s { exit(0); }' -o out.stacks
# Kernel stack
sudo dtrace -x stackframes=100 -n 'profile-197 /pid == 12345/ { @[stack()] = count(); } tick-60s { exit(0); }' -o out.kstacks
Capture Function Argument, Return Value and Latency
sudo dtrace -s getaddrinfo.d -p 12345
#!/usr/sbin/dtrace -s
/*
* getaddrinfo.d
*/
#pragma D option quiet
dtrace:::BEGIN
{
printf("%-20s %-4s %-12s %s\n", "TIME", "RET", "LATENCY(ms)", "HOST");
}
pid$target::getaddrinfo:entry
{
self->host = copyinstr(arg0);
self->start = timestamp;
}
pid$target::getaddrinfo:return
/self->start/
{
this->delta = (timestamp - self->start) / 1000000;
printf("%-20Y %-4d %-12d %s\n", walltimestamp, arg1, this->delta, self->host);
self->host = 0;
self->start = 0;
}