diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
commit | f4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch) | |
tree | 2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/util/memleak/find-rtns.sh | |
parent | a840692edc9c6d19cd7c057f68e39c7d95eb767d (diff) | |
download | nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2 nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip |
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz
Keywords:
Imported nx-X11-3.1.0-1.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/util/memleak/find-rtns.sh')
-rw-r--r-- | nx-X11/util/memleak/find-rtns.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/nx-X11/util/memleak/find-rtns.sh b/nx-X11/util/memleak/find-rtns.sh new file mode 100644 index 000000000..91431c770 --- /dev/null +++ b/nx-X11/util/memleak/find-rtns.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# +# $Xorg: find-rtns.sh,v 1.3 2000/08/17 19:55:19 cpqbld Exp $ +# +# find-routines - convert leak tracer stack traces into file/lineno traces +# modified to work with the an unmodified version of +# gdb-4.18 +# +# Usage: find-routines <program-name> {leak-tracing-output-files} +# +# $XFree86$ +# + +TMP1=find-routine.tmp1 +TMP=find-routine.tmp +trap "rm -f $TMP $TMP1" 0 +OBJ=$1 +shift +echo 'set width 500' > $TMP1 +# To load shared libs set breakpoint and run +echo 'break main' >> $TMP1 +echo 'r' >> $TMP1 +for i in `grep '\(return stack:\)\|\(allocated at\)' $* | + tr ' ' '\012' | + grep 0x | sort -u`; + do + echo 'x/i '$i >> $TMP1 + echo 'i line * '$i >> $TMP1 +done + +cat $TMP1 | gdb $OBJ \ + | awk '\ + /^\(gdb\) \(?g?d?b?\)? ?0x[[:xdigit:]]*.*:.*/ \ + {a = gensub(/^\(gdb\) \(?g?d?b?\)? ?(0x[[:xdigit:]]*).*:.*/,"\\1","G");\ + b = gensub(/^\(gdb\) \(?g?d?b?\)? ?(0x[[:xdigit:]]*.*):.*/,"\\1","G");\ + printf("s;%s;%s",a,b); next; } \ + /.*No line.*/ \ + {printf(";\n",a);next} \ + /.*Line [[:digit:]]+.*/ \ + {a = gensub(/.*(Line [[:digit:]]+ of .*) starts.*/,"\\1","G"); \ + printf(" at %s;\n", a); next}'>> $TMP + +awk '/return stack/ { printf ("return stack\n"); + for (i = 3; i <= NF; i++) + printf ("\troutine %s\n", $i); } + /allocated at/ { printf ("allocated at\n"); + for (i = 3; i <= NF; i++) + printf ("\t\troutine %s\n", $i); } + /^[A-Z]/ { print }' $* | + sed -f $TMP |