ovs-sandbox: add '-r' and '-e' options
authorAndy Zhou <azhou@nicira.com>
Tue, 14 Apr 2015 20:44:01 +0000 (13:44 -0700)
committerAndy Zhou <azhou@nicira.com>
Tue, 14 Apr 2015 21:53:45 +0000 (14:53 -0700)
'-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 <azhou@nicira.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
tutorial/Tutorial.md
tutorial/ovs-sandbox

index 1d8bbf5..1a38e4f 100644 (file)
@@ -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.
index ebee4a9..29f4504 100755 (executable)
@@ -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 <<EOF