Posted to tcl by gps at Wed Mar 11 08:00:44 GMT 2009view raw
-
- set fd [open [lindex $argv 0] r]
- set data [read $fd]
- close $fd
-
- array set objs {}
-
- foreach line [split $data \n] {
- if {[string match "new objPtr *" $line]} {
- set linelist [split $line]
- set addr [string trim [lindex $linelist 2]]
- #puts "add ADDR:$addr"
-
- if {[info exists objs($addr)]} {
- puts "re-newing an object that wasn't freed; $addr"
- puts "\tpreviously contained: $objs($addr)"
- }
-
- set objs($addr) [lrange $linelist 3 end]
- } elseif {[string match "freeing objPtr*" $line]} {
- set linelist [split $line]
- set addr [string trim [lindex $linelist 2]]
-
-
- if {![info exists objs($addr)]} {
- puts "invalid freed object: $addr : $line"
- } else {
- #puts "removing ADDR:$addr"
- unset objs($addr)
- }
- }
- }
-
- #parray objs
-
- array set stats {}
-
- foreach {key value} [array get objs] {
- lassign [split $value] _ file _ line
-
- set skey "$file $line"
-
- if {[info exists stats($skey)]} {
- incr stats($skey)
- } else {
- set stats($skey) 1
- }
- }
-
- parray stats
-