1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#! /bin/sh 2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# filter the output of gdb. 4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdir=`dirname $0` 6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/filter_stderr | 8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# Anonymise addresses 10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/../tests/filter_addresses | 11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# memcheck stuff 13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/filter_memcheck_monitor | 14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# Anonymise or remove : 17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete the initial lines between the launch of vgdb and the 18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# output of the echo command telling it is launched. 19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# This removes a whole lot of uninteresting lines varying 20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# with OS/glibc/gdb dep 21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# initial tty control character sent by gdb 7.0 22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove missing debuginfos 23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# vgdb message 24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# pid numbers 25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# Thread numbers 26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete thread switches 27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# info threads output (e.g. which thread is running and syscall) 28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete Reading symbols file lines 29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete Loaded symbols file lines 30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete language switch messages. 31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove gdb prompts. 32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove gdb continuation prompts. 33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove gdb done prompts. 34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# a 'general' system calls stack trace part 35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# a more specialised system call select stack trace part 36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# (on 32 bits, we have an int_80, on 64 bits, directly select) 37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# and yet another (gdb 7.0 way) to get a system call 38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# and yet another (gdb 7.0 arm way) to get a system call 39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# and cleanup some lines for a system call (on ubuntu 10 64 bits) 40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# (pay attention : there are tab characters there in) 41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# + yet another way to get a select system call 42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# which registers can't be modified 43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# special transform for arm/ppc watchpoints which have an additional address 44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# at the beginning 45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# SIGFPE backtrace is varying so much that we just remove all lines 46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# after the signal trapping using an expr in this sed, followed by another sed. 47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# transform info thread of 7.3 into the layout of 7.2 and before. 48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete lines telling that some memory can't be accessed: this is 49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# a.o. produced by gdb 7.2 on arm (same with standard gdbserver) 50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# delete empty lines (the last line (only made of prompts) sometimes 51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# finishes with a new line, sometimes not ???). 52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed -e '/Remote debugging using/,/vgdb launched process attached/d' \ 53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/^\[?1034hReading symbols/Reading symbols/' \ 54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^Missing separate debuginfo/d' \ 55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^Try: zypper install -C/d' \ 56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../' \ 57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/pid [0-9][0-9]*/pid ..../g' \ 58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/Thread [0-9][0-9]*/Thread ..../g' \ 59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/\[Switching to Thread ....\]/d' \ 60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(\[Switching to thread [1234] (Thread ....)\]\)#0/\1\n#0/' \ 61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/^\([ \* ] [0-9] Thread .... (tid [0-9] VgTs_WaitSys) 0x........ in\).*$/\1 syscall .../' \ 62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/#[0-9]\( 0x........ in sleeper_or_burner\)/#.\1/' \ 63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^Reading symbols from .*\.\.\.done\./d' \ 64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^Loaded symbols for .*$/d' \ 65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^Current language.*/d' \ 66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^The current source language is.*/d' \ 67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/(gdb) //g' \ 68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/^>[> ]*//' \ 69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^done\.$/d' \ 70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in _dl_sysinfo_int80 () from \/lib\/ld-linux.so.*/in syscall .../' \ 71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in kill ().*$/in syscall .../' \ 72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in .*kill ().*$/in syscall .../' \ 73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in _dl_sysinfo_int80 ()/in syscall .../' \ 74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^ from \/lib\/ld-linux.so.*$/d' \ 75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(0x........\) in ?? () from \/lib.*$/\1 in syscall .../' \ 76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(0x........\) in ?? ()$/\1 in syscall .../' \ 77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in \(.__\)\{0,1\}select () from \/.*$/in syscall .../' \ 78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^ from \/lib\/libc.so.*$/d' \ 79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^ from \/lib64\/libc.so.*$/d' \ 80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^ from \/lib64\/.*\/libc.so.*$/d' \ 81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in select ()$/in syscall .../' \ 82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in \.__select ()$/in syscall .../' \ 83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/in select () at \.\.\/sysdeps\/unix\/syscall-template\.S.*$/in syscall .../' \ 84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^[ ]*at \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ 85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^[ ]*in \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ 86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^[1-9][0-9]*[ ]*\.\.\/sysdeps\/unix\/syscall-template\.S/d' \ 87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^[1-9][0-9]*[ ]in *\.\.\/sysdeps\/unix\/syscall-template\.S/d' \ 88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(Could not write register \)".*"/\1 "xxx"/' \ 89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(ERROR changing register \).*$/\1 xxx regno y/' \ 90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/0x........ in \(main (argc=1, argv=0x........) at watchpoints.c:[24][3689]\)/\1/' \ 91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/0x........ in \(main () at clean_after_fork.c:34\)/\1/' \ 92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/\(^.*signal SIGFPE.*$\)/\1\nafter trap SIGFPE/' \ 93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/Id Target Id Frame/d' \ 94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/^\([ \*] [1234] \) *Thread /\1Thread /' \ 95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e 's/VgTs_WaitSys) 0x/VgTs_WaitSys) 0x/' \ 96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/Cannot access memory at address 0x......../d' \ 97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov -e '/^$/d' | 98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove all the lines telling where the SIGFPE was trapped. 100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed -e '/after trap SIGFPE/,/after continue SIGFPE/d' | 101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# join together two lines that gdb 7.1 splits in two (???) 103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# (in a separate sed, as the below influences the behaviour of the other expressions) 104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed -e :a -e '$!N;s/\n at sleepers.c:39/ at sleepers.c:39/;ta' -e 'P;D' 105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 106