Using gdbserver instead of plain gdb allows two new use cases: 1. Ability to debug vSwitch running on remote/virtual machines 2. Ability to debug vSwitch with IDE (tested on CLion)
Signed-off-by: Guzowski Adrian <[email protected]> --- tutorial/ovs-sandbox | 51 +++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/tutorial/ovs-sandbox b/tutorial/ovs-sandbox index 09e9773ce..f0d78aea3 100755 --- a/tutorial/ovs-sandbox +++ b/tutorial/ovs-sandbox @@ -30,6 +30,8 @@ run_xterm() { rungdb() { under_gdb=$1 gdb_run=$2 + gdbserver_addr=$3 + shift shift shift @@ -41,12 +43,19 @@ rungdb() { args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g` xterm_title=$1 - gdb_cmd="" - if $gdb_run; then - gdb_cmd="-ex run" + if [ "$gdbserver_addr" ]; then + gdb_cmd="gdbserver" + gdb_args="$gdbserver_addr" + else + gdb_cmd="gdb" + if $gdb_run; then + gdb_args="-ex run --args" + else + gdb_args="--args" + fi fi - run_xterm $xterm_title gdb $gdb_cmd --args $args + run_xterm $xterm_title $gdb_cmd $gdb_args $args else run $@ fi @@ -56,6 +65,7 @@ gdb_vswitchd=false gdb_ovsdb=false gdb_vswitchd_ex=false gdb_ovsdb_ex=false +gdbserver_addr= builddir= srcdir= schema= @@ -96,21 +106,23 @@ you built. Otherwise, if you have an installed Open vSwitch, it uses the installed version. These options force ovs-sandbox to use a particular OVS build: - -b, --builddir=DIR specify Open vSwitch build directory - -s, --srcdir=DIR specify Open vSwitch source directory + -b, --builddir=DIR specify Open vSwitch build directory + -s, --srcdir=DIR specify Open vSwitch source directory These options force ovs-sandbox to use an installed Open vSwitch: - -i, --installed use installed Open vSwitch + -i, --installed use installed Open vSwitch General options: - -g, --gdb-vswitchd run ovs-vswitchd under gdb - -d, --gdb-ovsdb run ovsdb-server under gdb - --dummy=ARG pass --enable-dummy=ARG to vswitchd (default: override) - -R, --gdb-run automatically start running the daemon in gdb - for any daemon set to run under gdb - -S, --schema=FILE use FILE as vswitch.ovsschema - + -g, --gdb-vswitchd run ovs-vswitchd under gdb + -d, --gdb-ovsdb run ovsdb-server under gdb + --dummy=ARG pass --enable-dummy=ARG to vswitchd + (default: override) + -R, --gdb-run automatically start running the daemon in gdb + for any daemon set to run under gdb + -S, --schema=FILE use FILE as vswitch.ovsschema + -L, --gdbserver-addr=ADDR run gdbserver instead of gdb + on specified address Other options: - -h, --help Print this usage message. + -h, --help Print this usage message. EOF exit 0 ;; @@ -168,6 +180,9 @@ EOF gdb_vswitchd_ex=true gdb_ovsdb_ex=true ;; + --gdbserver-addr*=*) + gdbserver_addr=$optarg + ;; -*) echo "unrecognized option $option (use --help for help)" >&2 exit 1 @@ -271,7 +286,8 @@ trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15 touch "$sandbox"/.conf.db.~lock~ run ovsdb-tool create conf.db "$schema" ovsdb_server_args= -rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file -vsyslog:off \ +rungdb $gdb_ovsdb $gdb_ovsdb_ex "$gdbserver_addr" ovsdb-server --detach \ + --no-chdir --pidfile -vconsole:off --log-file -vsyslog:off \ --remote=punix:"$sandbox"/db.sock \ --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ $ovsdb_server_args @@ -292,7 +308,8 @@ fi run ovs-vsctl --no-wait -- init # Start ovs-vswitchd. -rungdb $gdb_vswitchd $gdb_vswitchd_ex ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off -- log-file -vsyslog:off \ +rungdb $gdb_vswitchd $gdb_vswitchd_ex "$gdbserver_addr" ovs-vswitchd --detach \ + --no-chdir --pidfile -vconsole:off --log-file -vsyslog:off \ --enable-dummy=$dummy -vvconn -vnetdev_dummy cat <<EOF -- 2.30.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
