]> git.mxchange.org Git - flightgear.git/commitdiff
Initial revision of a script to facilitate debugging with valgrind.
authorcurt <curt>
Wed, 5 Jun 2002 19:58:07 +0000 (19:58 +0000)
committercurt <curt>
Wed, 5 Jun 2002 19:58:07 +0000 (19:58 +0000)
scripts/Makefile.am
scripts/debug/.cvsignore [new file with mode: 0644]
scripts/debug/Makefile.am [new file with mode: 0644]
scripts/debug/debug-fgfs [new file with mode: 0755]
scripts/debug/sample.fgfs.supp [new file with mode: 0644]

index 96fcb3e25387f79a28c5e45d88f0afab8e5c0454..ab4494671719937d2cf4c171c75697978c57aba2 100644 (file)
@@ -1 +1 @@
-SUBDIRS = python
+SUBDIRS = debug python
diff --git a/scripts/debug/.cvsignore b/scripts/debug/.cvsignore
new file mode 100644 (file)
index 0000000..c2f6e13
--- /dev/null
@@ -0,0 +1,2 @@
+fgfs.supp
+core*
diff --git a/scripts/debug/Makefile.am b/scripts/debug/Makefile.am
new file mode 100644 (file)
index 0000000..954f6e1
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST = debug-fgfs sample.fgfs.supp
diff --git a/scripts/debug/debug-fgfs b/scripts/debug/debug-fgfs
new file mode 100755 (executable)
index 0000000..32c4f30
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/bash
+# $Id$
+#
+#
+#  To use this script you need
+#  - a Linux 2.4 system with libc 2.2.* and at least XFree86 4.1
+#  - the valgrind debugger (http://developer.kde.org/~sewardj/)
+#  - lots of memory (RAM + swap space > 600MB!) and
+#  - a fast computer =or= a lot of patience.
+#
+#  It is useful (but not required) to compile FlightGear without
+#  any optimizations (-O0 without -funroll-loops etc.). Otherwise
+#  the debug messages might not seem to make sense in some cases.
+#
+#  The sample suppression file is designed for a SuSE 7.1 system
+#  with Linux 2.4.18, XFree86 4.2.0 and a 3dfx card. Don't use it
+#  as it is, but create your own! You will likely have different
+#  libraries with different bugs.
+#
+#  If you have problems with valgrind and FlightGear, don't bother
+#  the valgrind author -- ask on the flightgear-devel list first!
+#
+#
+# 
+#  adapt the following two entries to your needs:
+#
+fgfs="../FlightGear/src/Main/fgfs"
+opt="--disable-game-mode --disable-fullscreen --fdm=magic"
+
+
+
+gdb="--gdb-attach=yes"
+cmd=
+extra=
+
+while true; do
+       case "$1" in
+       -h|--help)      cat <<-EOF
+               debug [-r] [-g] [-i] [-b] [-c] [-x] [-h]
+
+               -r      run fgfs
+               -g      run fgfs with gdb
+               -i      interactive valgrind run (default)
+               -b      valgrind batch run
+               -c      start gdb with most recent core dump
+               -x      add some extra pedantic valgrind parameters
+               -h      show this help screen
+               EOF
+               exit 0
+               ;;
+       -r)     cmd="$fgfs $opt" ;;
+       -g)     cmd="gdb -x .gdbinit $fgfs" ;;
+       -i)     cmd=""; gdb="" ;;
+       -b)     gdb="" ;;
+       -x)     extra="--single-step=yes --optimise=no --cleanup=no --dump-error=1" ;;
+       -c)     core=$(ls -t core*|head -1)
+               if test -z $core; then
+                       echo "$0: there's no core file"
+                       exit 1
+               fi
+               cmd="gdb $fgfs $core"
+               ;;
+       *)      break ;;
+       esac
+       shift
+done
+
+if ! test -e "$fgfs"; then
+       echo "$0: there's no fgfs exectuable $fgfs"
+       exit 2
+fi
+
+echo "set args $opt" > .gdbinit
+
+test -e fgfs.supp || head -14 sample.fgfs.supp > fgfs.supp
+
+test -z "$cmd" && cmd="nice valgrind $gdb --num-callers=10 --suppressions=fgfs.supp $extra $* $fgfs $opt"
+
+echo "command: $cmd"
+exec $cmd
+
diff --git a/scripts/debug/sample.fgfs.supp b/scripts/debug/sample.fgfs.supp
new file mode 100644 (file)
index 0000000..3051919
--- /dev/null
@@ -0,0 +1,91 @@
+# valgrind suppression rules for FlightGear
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     kind: one of Param Value1 Value2 Value4 Value8
+#               Cond Free Addr1 Addr2 Addr4 Addr8
+#     (if Param: name of system call param, if Free: name of free-ing fn)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+
+# sample rules for Linux kernel 2.4, glibc 2.2.4, XFree86 4.2.0, 3dfx
+
+{
+    _dlopen_signal_error(Addr1)
+    Addr1
+    fun:_dl_signal_error
+    fun:_dl_open
+    fun:dlopen_doit
+}
+
+{
+    _dl_signal_error(Addr4)
+    Addr4
+    fun:_dl_signal_error
+    fun:_dl_open
+    fun:dlopen_doit
+}
+
+{
+    memcpy(Addr1)
+    Addr1
+    fun:memcpy
+    fun:_dl_signal_error
+    fun:_dl_open
+    fun:dlopen_doit
+}
+
+{
+    memcpy(Addr4)
+    Addr4
+    fun:memcpy
+    fun:_dl_signal_error
+    fun:_dl_open
+    fun:dlopen_doit
+}
+
+{
+    ioctl(generic)/(Param)
+    Param
+    ioctl(generic)
+    fun:__ioctl
+    fun:driMesaCreateScreen
+    fun:__driCreateScreen
+}
+
+{
+    Mesa/texsubimage2d...(Addr1)
+    Addr1
+    fun:texsubimage2d_*_to_*
+    fun:convert_texsubimage2d_*
+    fun:_mesa_convert_texsubimage2d
+    fun:tdfxDDTexImage2D
+}
+
+{
+    Mesa/texsubimage2d...(Addr4)
+    Addr4
+    fun:texsubimage2d_*_to_*
+    fun:convert_texsubimage2d_*
+    fun:_mesa_convert_texsubimage2d
+    fun:tdfxDDTexImage2D
+}
+
+{
+    Mesa/texsubimage2d...(Value1)
+    Value1
+    fun:texsubimage2d_*_to_*
+    fun:convert_texsubimage2d_*
+    fun:_mesa_convert_texsubimage2d
+    fun:tdfxDDTexImage2D
+}
+
+{
+    known-plib-bug/already_reported(Cond)
+    Cond
+    fun:removeEntity__7ssgListUi
+}