A selection of relatively minor problems in the build system.
[wvstreams.git] / uniconf / wvconfemutrace.pl
blob6290cc2ffc8966ab6a288907f06c1c5117c5970b
1 #! /usr/bin/perl -w
3 use strict;
5 my %entries;
6 my $binary = shift(@ARGV);
8 while(my $line = <>) {
9 next unless $line =~ m/^TRACE:/;
10 chomp($line);
11 my(undef, $type, $section, $key, $cookie, @backtrace) = split(/:/, $line);
13 if($type eq 'add') {
14 $entries{$section} = {} if !defined($entries{$section});
15 $entries{$section}{$key} = {} if !defined($entries{$section}{$key});
17 $entries{$section}{$key}{$cookie} = \@backtrace;
18 } elsif($type eq 'del') {
19 $entries{$section}{$key}{$cookie} = undef;
20 } else {
21 die("unknown type");
25 foreach my $section (sort(keys(%entries))) {
26 foreach my $key (sort(keys(%{$entries{$section}}))) {
27 foreach my $cookie (sort(keys(%{$entries{$section}{$key}}))) {
28 if(defined($entries{$section}{$key}{$cookie})) {
29 print "[$section]$key -> $cookie:\n";
30 shift(@{$entries{$section}{$key}{$cookie}});
31 foreach my $frame (@{$entries{$section}{$key}{$cookie}}) {
32 $frame =~ s/\+0x[0-9a-f]+\)/)/;
33 $frame =~ s/\) \[(.*)\]$/)/;
34 #my $line = `addr2line -e $binary $1`;
35 #chomp($line);
37 print "\t$1: $frame\n", ;