30 lines
991 B
Awk
30 lines
991 B
Awk
# This AWK script reads the output of testfixture when compiled for memory
|
|
# debugging. It generates SQL commands that can be fed into an sqlite
|
|
# instance to determine what memory is never freed. A typical usage would
|
|
# be as follows:
|
|
#
|
|
# make -f memleak.mk fulltest 2>mem.out
|
|
# awk -f ../sqlite/tool/memleak2.awk mem.out | ./sqlite :memory:
|
|
#
|
|
# The job performed by this script is the same as that done by memleak.awk.
|
|
# The difference is that this script uses much less memory when the size
|
|
# of the mem.out file is huge.
|
|
#
|
|
BEGIN {
|
|
print "CREATE TABLE mem(loc INTEGER PRIMARY KEY, src);"
|
|
}
|
|
/[0-9]+ malloc / {
|
|
print "INSERT INTO mem VALUES(" strtonum($6) ",'" $0 "');"
|
|
}
|
|
/[0-9]+ realloc / {
|
|
print "INSERT INTO mem VALUES(" strtonum($10) \
|
|
",(SELECT src FROM mem WHERE loc=" strtonum($8) "));"
|
|
print "DELETE FROM mem WHERE loc=" strtonum($8) ";"
|
|
}
|
|
/[0-9]+ free / {
|
|
print "DELETE FROM mem WHERE loc=" strtonum($6) ";"
|
|
}
|
|
END {
|
|
print "SELECT src FROM mem;"
|
|
}
|