1 2#pragma ident "%Z%%M% %I% %E% SMI" 3 4# This AWK script reads the output of testfixture when compiled for memory 5# debugging. It generates SQL commands that can be fed into an sqlite 6# instance to determine what memory is never freed. A typical usage would 7# be as follows: 8# 9# make -f memleak.mk fulltest 2>mem.out 10# awk -f ../sqlite/tool/memleak2.awk mem.out | ./sqlite :memory: 11# 12# The job performed by this script is the same as that done by memleak.awk. 13# The difference is that this script uses much less memory when the size 14# of the mem.out file is huge. 15# 16BEGIN { 17 print "CREATE TABLE mem(loc INTEGER PRIMARY KEY, src);" 18} 19/[0-9]+ malloc / { 20 print "INSERT INTO mem VALUES(" strtonum($6) ",'" $0 "');" 21} 22/[0-9]+ realloc / { 23 print "INSERT INTO mem VALUES(" strtonum($10) \ 24 ",(SELECT src FROM mem WHERE loc=" strtonum($8) "));" 25 print "DELETE FROM mem WHERE loc=" strtonum($8) ";" 26} 27/[0-9]+ free / { 28 print "DELETE FROM mem WHERE loc=" strtonum($6) ";" 29} 30END { 31 print "SELECT src FROM mem;" 32} 33