#!/bin/sh set -e # For example, put this in x.gdb # break adns__revparse_label # break adns__revparse_done # run # and then # debug='./gdbwrap -n x.gdb' ./r1test tcpptr # # gdbwrap can be passed arguments like # *.gdb passed to gdb with -x # -n exit with exit status 5 which makes r1test think "skipped" # # other arguments are taken to be the program name provided by # whatever has been told to use gdbwrap (eg r1test) while true; do case "$1" in *.gdb) xgdb="-x $1"; shift;; -n) x5='exit 5'; shift;; *) break;; esac done exe=$1; shift exec 5<&0 6>&1 7>&2 exec 0<>/dev/tty 1>&0 2>&0 set +e ex="set args <&5 >&6 2>&7" for a in "$@"; do ex="$ex '$a'" done gdb --return-child-result -ex "$ex" $xgdb $exe $x5