Set the motion transform id in the collection step.
[flightgear.git] / scripts / debug / debug-fgfs
blob72ccba28d9c8fc07b792be87465591adc213bbaa
1 #!/bin/bash
2 # $Id$
5 # To use this script you need
6 # - a Linux system >=2.4 with libc >=2.2.*
7 # - the valgrind debugger (http://www.valgrind.org/)
8 # - lots of memory (RAM + swap space > 600MB!) and
9 # - a fast computer =or= a lot of patience.
11 # It is useful (but not required) to compile FlightGear without
12 # any optimizations (-O0 without -funroll-loops etc.). Otherwise
13 # the debug messages might not seem to make sense in some cases.
15 # The sample suppression file is designed for a SuSE 7.1 system
16 # with Linux 2.4.18, XFree86 4.2.0 and a 3dfx card. Don't use it
17 # as it is, but create your own! You will likely have different
18 # libraries with different bugs.
20 # If you have problems with valgrind and FlightGear, don't bother
21 # the valgrind author -- ask on the flightgear-devel list first!
25 # adapt the following two entries to your needs:
27 fgfs="../../src/Main/fgfs"
28 opt="--log-level=info --disable-game-mode --aircraft=ufo --geometry=800x600"
30 gdb="--db-attach=yes"
31 cmd=
32 extra=
34 while true; do
35 case "$1" in
36 -h|--help) cat <<-EOF
37 debug [-r] [-g] [-i] [-b] [-c] [-x] [-h]
39 -r run fgfs
40 -g|-d run fgfs with gdb
41 -D run fgfs with ddd
42 -i interactive valgrind run (default)
43 -p calltree profile run
44 -b valgrind batch run
45 -c start gdb with most recent core dump
46 -s print suppression info
47 -l enable leak/reachable check
48 -h show this help screen
49 EOF
50 exit 0
52 -r) cmd="$fgfs $opt" ;;
53 -g|-d) cmd="gdb -x .gdbinit $fgfs" ;;
54 -D) cmd="ddd -x .gdbinit $fgfs" ;;
55 -m) cmd="make -C ../.." ;;
56 -i) cmd=""; gdb="" ;;
57 -p) cmd="callgrind --dump-instr=yes --trace-jump=yes --dump-threads=yes $fgfs $opt"; gdb="" ;;
58 -b) gdb="" ;;
59 -s) extra="$extra --gen-suppressions=yes" ;;
60 -l) extra="$extra --leak-check=yes --show-reachable=yes" ;;
61 -c) core=$(ls -t core* 2>/dev/null|head -1)
62 if test -z $core; then
63 echo "$0: there's no core file"
64 exit 1
66 cmd="gdb $fgfs $core"
68 *) break ;;
69 esac
70 shift
71 done
73 if ! test -e "$fgfs"; then
74 echo "$0: there's no fgfs executable $fgfs"
75 exit 2
78 echo "set args $opt" > .gdbinit
79 echo "handle SIG32 nostop noprint" >> .gdbinit # work around gdb bug
81 test -e fgfs.supp || head -14 sample.fgfs.supp > fgfs.supp
83 test -z "$cmd" && cmd="nice valgrind \
84 --tool=memcheck $gdb --num-callers=64 \
85 --suppressions=fgfs.supp \
86 --error-limit=no \
87 $extra $* $fgfs $opt"
89 echo "command: $cmd"
90 #export LD_PRELOAD='/usr/lib/GL/libGL.so.1.3.mesasoft'
91 #export __GL_FORCE_GENERIC_CPU=1
92 exec $cmd