1 #!/usr/bin/awk -f 2 # 3 # Awk program to analyze mtrace.c output. 4 # 5 $1 == "+" { if (allocated[$2] != "") 6 print "+", $2, "Alloc", NR, "duplicate:", allocated[$2]; 7 else 8 allocated[$2] = $3; 9 } 10 $1 == "-" { if (allocated[$2] != "") { 11 allocated[$2] = ""; 12 if (allocated[$2] != "") 13 print "DELETE FAILED", $2, allocated[$2]; 14 } else 15 print "-", $2, "Free", NR, "was never alloc'd"; 16 } 17 $1 == "<" { if (allocated[$2] != "") 18 allocated[$2] = ""; 19 else 20 print "-", $2, "Realloc", NR, "was never alloc'd"; 21 } 22 $1 == ">" { if (allocated[$2] != "") 23 print "+", $2, "Realloc", NR, "duplicate:", allocated[$2]; 24 else 25 allocated[$2] = $3; 26 } 27 28 # Ignore "= Start" 29 $1 == "=" { } 30 # Ignore failed realloc attempts for now 31 $1 == "!" { } 32 33 34 END { for (x in allocated) 35 if (allocated[x] != "") 36 print "+", x, allocated[x]; 37 } 38