X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Ftracemunch;h=b33b7d59e0df690213a987ed25f3c30ceedb97e2;hp=a56c44ad9f4537ff50bb648e687175f101c9517b;hb=a20e6eb464be80b9cd8cae7ce925d27fe9c209ed;hpb=07e31b3b587a07281ff7c71e5c13248a31048257 diff --git a/test/tracemunch b/test/tracemunch index a56c44ad..b33b7d59 100755 --- a/test/tracemunch +++ b/test/tracemunch @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# $Id: tracemunch,v 1.9 2017/05/07 19:59:08 tom Exp $ +# $Id: tracemunch,v 1.16 2017/08/09 23:59:00 tom Exp $ ############################################################################## # Copyright (c) 1998-2005,2017 Free Software Foundation, Inc. # # # @@ -42,12 +42,14 @@ our $waddnstr = "waddnstr\\(0x([[:xdigit:]]+),\"([^\"]+)\",[0-9]+\\) called {A_NORMAL}"; our $scr_nums = 0; +our $thr_nums = 0; our $try_nums = 0; our $win_nums = 0; our $curscr = ""; our $newscr = ""; our $stdscr = ""; our %scr_addr; +our %thr_addr; our %try_addr; our %win_addr; @@ -62,6 +64,10 @@ sub transaddr { $n = $scr_addr{$addr}; $arg =~ s/\b$addr\b/screen$n/g; } + foreach my $addr ( keys %thr_addr ) { + $n = $thr_addr{$addr}; + $arg =~ s/\b$addr\b/thread$n/g; + } foreach my $addr ( keys %try_addr ) { $n = $try_addr{$addr}; $arg =~ s/\b$addr\b/tries_$n/g; @@ -70,6 +76,15 @@ sub transaddr { $n = $win_addr{$addr}; $arg =~ s/\b$addr\b/window$n/g; } + if ( $arg =~ /add_wch\((window\d+,)?0x[[:xdigit:]]+\)/i ) { + $arg =~ s/(0x[[:xdigit:]]+)[)]/\&wch)/i; + } + elsif ( $arg =~ /color_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){3}/i ) { + $arg =~ s/(,0x[[:xdigit:]]+){3}[)]/,\&r,\&g,\&b)/i; + } + elsif ( $arg =~ /pair_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){2}/i ) { + $arg =~ s/(,0x[[:xdigit:]]+){2}[)]/,\&fg,\&bg)/i; + } return $arg; } @@ -81,6 +96,13 @@ while () { CLASSIFY: { + my $thread = ""; + if ( $_ =~ /^(0x[[:xdigit:]]+):/ ) { + $thr_addr{$1} = ++$thr_nums unless defined $thr_addr{$1}; + $thread = "thread" . $thr_addr{$1} . ":"; + $_ =~ s/^[^:]*://; + } + # Transform window pointer addresses so it's easier to compare logs $awaiting = "curscr" if ( $_ =~ /creating curscr/ ); $awaiting = "newscr" if ( $_ =~ /creating newscr/ ); @@ -105,10 +127,15 @@ while () { elsif ( $_ =~ /^(\+ )*called {_nc_add_to_try\((0x[[:xdigit:]]+),/ ) { $try_addr{$2} = ++$try_nums unless defined $try_addr{$2}; } + elsif ( $_ =~ /^(\+ )*_nc_alloc_screen_sp 0x([[:xdigit:]]+)/ ) { + $addr = "0x$2"; + $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} ); + $awaiting = ""; + } elsif ( $_ =~ /^(\+ )*return }0x([[:xdigit:]]+)/ ) { $addr = "0x$2"; if ( $awaiting eq "screen" ) { - $scr_addr{$addr} = ++$scr_nums; + $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} ); } } elsif ( $_ =~ /^\.\.\.deleted win=0x([[:xdigit:]]+)/ ) { @@ -180,7 +207,7 @@ while () { print "${repeatcount} REPEATS OF $anyline"; } else { - print $anyline; + print $thread . $anyline; } redo CLASSIFY if $_;