diff options
Diffstat (limited to 'extras/hs-test/vppinstance.go')
-rw-r--r-- | extras/hs-test/vppinstance.go | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/extras/hs-test/vppinstance.go b/extras/hs-test/vppinstance.go index 4092d35cfd6..1c28ec920b7 100644 --- a/extras/hs-test/vppinstance.go +++ b/extras/hs-test/vppinstance.go @@ -3,8 +3,11 @@ package main import ( "fmt" "github.com/edwarnicke/exechelper" + "os" "os/exec" + "os/signal" "strings" + "syscall" "time" "go.fd.io/govpp" @@ -113,8 +116,27 @@ func (vpp *VppInstance) start() error { startupFileName := vpp.getEtcDir() + "/startup.conf" vpp.container.createFile(startupFileName, configContent) - // Start VPP - vpp.container.execServer("su -c \"vpp -c " + startupFileName + " &> /proc/1/fd/1\"") + if *IsVppDebug { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT) + cont := make(chan bool, 1) + go func() { + sig := <-sig + fmt.Println(sig) + cont <- true + }() + + // Start VPP in GDB and wait for user to attach it + vpp.container.execServer("su -c \"gdb -ex run --args vpp -c " + startupFileName + " &> /proc/1/fd/1\"") + fmt.Println("run following command in different terminal:") + fmt.Println("docker exec -it " + vpp.container.name + " gdb -ex \"attach $(docker exec " + vpp.container.name + " pidof gdb)\"") + fmt.Println("Afterwards press CTRL+C to continue") + <-cont + fmt.Println("continuing...") + } else { + // Start VPP + vpp.container.execServer("su -c \"vpp -c " + startupFileName + " &> /proc/1/fd/1\"") + } // Connect to VPP and store the connection sockAddress := vpp.container.GetHostWorkDir() + defaultApiSocketFilePath |