From 60ceeb6c16572e75e7609ec53cf22f6700fd876f Mon Sep 17 00:00:00 2001 From: Andy Zhou Date: Tue, 14 Apr 2015 13:44:01 -0700 Subject: ovs-sandbox: add '-r' and '-e' options '-e' option will run ovs-vswitchd under gdb, but runs immediately instead of waiting for user input. '-r' options applies to ovsdb-server. Signed-off-by: Andy Zhou Acked-by: Russell Bryant --- tutorial/Tutorial.md | 5 +++++ tutorial/ovs-sandbox | 27 ++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) (limited to 'tutorial') diff --git a/tutorial/Tutorial.md b/tutorial/Tutorial.md index 1d8bbf5ec..1a38e4fed 100644 --- a/tutorial/Tutorial.md +++ b/tutorial/Tutorial.md @@ -118,6 +118,11 @@ This option can be handy for setting break points before ovs-vswitchd runs, or for catching early segfaults. Similarly, a '-d' option can be used to run ovsdb-server under GDB. Both options can be specified at the same time. +In addition, a '-e' option also launches ovs-vswitchd under GDB. However, +instead of displaying a 'gdb>' prompt and waiting for user input, ovs-vswitchd +will start to execute immediately. '-r' option is the corresponding option +for running ovsdb-server under gdb with immediate execution. + To avoid GDB mangling with the sandbox sub shell terminal, 'ovs-sandbox' starts a new xterm to run each GDB session. For systems that do not support X windows, GDB support is effectively disabled. diff --git a/tutorial/ovs-sandbox b/tutorial/ovs-sandbox index ebee4a9fb..29f450491 100755 --- a/tutorial/ovs-sandbox +++ b/tutorial/ovs-sandbox @@ -28,7 +28,10 @@ run_xterm() { rungdb() { under_gdb=$1 + gdb_run=$2 shift + shift + # Remove the --detach and to put the process under gdb control. # Also remove --vconsole:off to allow error message to show up # on the console. @@ -36,7 +39,13 @@ rungdb() { if $under_gdb && [ "$DISPLAY" ]; then args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g` xterm_title=$1 - run_xterm $xterm_title gdb -ex run --args $args + + gdb_cmd="" + if $gdb_run; then + gdb_cmd="-ex run" + fi + + run_xterm $xterm_title gdb $gdb_cmd --args $args else run $@ fi @@ -44,6 +53,8 @@ rungdb() { gdb_vswitchd=false gdb_ovsdb=false +gdb_vswitchd_ex=false +gdb_ovsdb_ex=false builddir= srcdir= schema= @@ -126,9 +137,19 @@ EOF ;; -g|--gdb-v*) gdb_vswitchd=true + gdb_vswitchd_ex=false + ;; + -e|--gdb-ex-v*) + gdb_vswitchd=true + gdb_vswitchd_ex=true ;; -d|--gdb-o*) gdb_ovsdb=true + gdb_ovsdb_ex=false + ;; + -r|--gdb-ex-o*) + gdb_ovsdb=true + gdb_ovsdb_ex=true ;; -*) echo "unrecognized option $option (use --help for help)" >&2 @@ -232,7 +253,7 @@ trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15 # Create database and start ovsdb-server. touch "$sandbox"/.conf.db.~lock~ run ovsdb-tool create conf.db "$schema" -rungdb $gdb_ovsdb ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \ +rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \ --remote=punix:"$sandbox"/db.sock #Add a small delay to allow ovsdb-server to launch. @@ -251,7 +272,7 @@ fi run ovs-vsctl --no-wait -- init # Start ovs-vswitchd. -rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \ +rungdb $gdb_vswitchd $gdb_vswitchd_ex ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \ --enable-dummy=override -vvconn -vnetdev_dummy cat <