6 my $opt_f=1,shift if ($ARGV[0]||"") eq "-f";
11 open F,$fname or die $fname;
12 my $F=do { local $/; <F>; };
13 defined $F or die $fname;
14 close F or die $fname;
20 die "Invalid addr: $hex" if $hex!~/^[0-9a-f]+$/i;
27 while ($f=~/^(([0-9a-f]+)-([0-9a-f]+) [r-][w-][x-][p-] .*)\r?$/mg) {
31 push @f,[$line,$start,$end];
34 $f=~/^RIP=(0x[^,]*),/m or die "no RIP";
36 my $stack=($f=~/^Top of Stack:.*?\n(.*?\n)\n/ms)[0] or die "no Top of Stack";
37 $stack=~s/^0x.*: *//mg;
38 push @ARGV,split /\s+/,$stack;
41 my $addr=fromhex $arg;
47 $found=1,print "$arg: $line\n" if $start<=$addr&&$addr<$end&&(!$opt_f||$line=~/[^ ]$/);
49 print "$arg: -\n" if !$found&&!$opt_f;