X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fhs-test%2Fvppinstance.go;h=1c28ec920b7af3edc2b7c382ea868cb8d7c98178;hb=ec5c40b83acae400a8cc1a18ad897b6365774559;hp=4092d35cfd61854d5175172a4ab15e4abcc73222;hpb=2da99e50722f258618fa5fe53f93e603c97d4fe3;p=vpp.git 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