#!/bin/rc # umem pid [binary] - print summary of allocate blocks in a running process rfork e if(! ~ $#* 1 2){ echo 'usage: umem pid [binary]' >[1=2] exit usage } p=$1 binary=() if(~ $#* 2) binary=$2 echo 'blocksummary()' | acid -lpool -lleak $p $binary | awk ' $1 == "block" { addr=$6 size=$3 alloc=$4 total[alloc] += size count[alloc]++ } $1 == "summary" { alloc=$2 cnt=$3 size=$4 total[alloc] += size count[alloc] += cnt } END{ for(i in count) printf("%6d %11d %s\n", count[i], total[i], i); } ' | sort -nr