17c478bd9Sstevel@tonic-gate# 2*1da57d55SToomas Soome# This script looks for memory leaks by analyzing the output of "sqlite" 37c478bd9Sstevel@tonic-gate# when compiled with the MEMORY_DEBUG=2 option. 47c478bd9Sstevel@tonic-gate# 57c478bd9Sstevel@tonic-gate/[0-9]+ malloc / { 67c478bd9Sstevel@tonic-gate mem[$6] = $0 77c478bd9Sstevel@tonic-gate} 87c478bd9Sstevel@tonic-gate/[0-9]+ realloc / { 97c478bd9Sstevel@tonic-gate mem[$8] = ""; 107c478bd9Sstevel@tonic-gate mem[$10] = $0 117c478bd9Sstevel@tonic-gate} 127c478bd9Sstevel@tonic-gate/[0-9]+ free / { 137c478bd9Sstevel@tonic-gate if (mem[$6]=="") { 147c478bd9Sstevel@tonic-gate print "*** free without a malloc at",$6 157c478bd9Sstevel@tonic-gate } 167c478bd9Sstevel@tonic-gate mem[$6] = ""; 177c478bd9Sstevel@tonic-gate str[$6] = "" 187c478bd9Sstevel@tonic-gate} 197c478bd9Sstevel@tonic-gate/^string at / { 207c478bd9Sstevel@tonic-gate addr = $4 217c478bd9Sstevel@tonic-gate sub("string at " addr " is ","") 227c478bd9Sstevel@tonic-gate str[addr] = $0 237c478bd9Sstevel@tonic-gate} 247c478bd9Sstevel@tonic-gateEND { 257c478bd9Sstevel@tonic-gate for(addr in mem){ 267c478bd9Sstevel@tonic-gate if( mem[addr]=="" ) continue 277c478bd9Sstevel@tonic-gate print mem[addr], str[addr] 287c478bd9Sstevel@tonic-gate } 297c478bd9Sstevel@tonic-gate} 30