X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=main.go;h=dfe2a149e6004905cf0c5f44c2cb90fd75be8a2d;hb=26e08d45599deb4ade79e0ca45a97196f2bd7da9;hp=4302e9c9fb9afddbd9c233ce1516b570ff6c8598;hpb=68ac563c8ce709fe55d3cf38ea230ea78d633d6a;p=src%2Fxds%2Fxds-gdb.git diff --git a/main.go b/main.go index 4302e9c..dfe2a14 100644 --- a/main.go +++ b/main.go @@ -123,7 +123,7 @@ func main() { }, EnvVar{ Name: "XDS_LOGFILE", - Usage: "logging file", + Usage: "logging file (default: " + logFileInitial + ")", Destination: &logFile, }, EnvVar{ @@ -345,7 +345,7 @@ endloop: // Handle client tty / pts if clientPty != "" { - log.Infoln("Client tty detected: %v\n", clientPty) + log.Infoln("Client tty detected: %v", clientPty) cpFd, err := os.OpenFile(clientPty, os.O_RDWR, 0) if err != nil { @@ -360,7 +360,7 @@ endloop: sc := bufio.NewScanner(reader) for sc.Scan() { data := sc.Text() - iosk.Emit(apiv1.ExecInferiorInEvent, data+"\n") + iosk.Emit(xaapiv1.ExecInferiorInEvent, data+"\n") log.Debugf("Inferior IN: <%v>", data) } if sc.Err() != nil { @@ -409,6 +409,10 @@ endloop: paranoia := 600 reader := bufio.NewReader(os.Stdin) + // Enable workaround to correctly close connection + // except if XDS_GDBSERVER_EXIT_NOFIX is defined + _, gdbExitNoFix := os.LookupEnv("XDS_GDBSERVER_EXIT_NOFIX") + for { sc := bufio.NewScanner(reader) for sc.Scan() { @@ -421,6 +425,16 @@ endloop: log.Debugf("OVERWRITE %s -> %s", key, value) } } + + // Send SIGINT to stop debugged process execution before sending -gdb-exit command + if !gdbExitNoFix && strings.Contains(command, "-gdb-exit") { + log.Infof("Detection of -gdb-exit, exiting...") + if err := gdb.SendSignal(syscall.SIGINT); err != nil { + log.Errorf("Error while sending signal SIGINT : %s", err.Error()) + } + time.Sleep(time.Millisecond * 200) + } + gdb.Write(command + "\n") log.Debugf("Send: <%v>", command) } @@ -446,8 +460,13 @@ endloop: go func() { for { sig := <-sigs + + if isIgnoredSignal(sig) { + return + } + if err := gdb.SendSignal(sig); err != nil { - log.Errorf("Error while sending signal: %s", err.Error()) + log.Errorf("Error while sending signal %v : %s", sig, err.Error()) } } }() @@ -503,9 +522,10 @@ func loadConfigEnvFile(confFile, gdbCmdFile string) (map[string]string, string, path.Join(curDir, "target"), path.Join(u.HomeDir, ".config", "xds"), } { - confFile = path.Join(d, xdsEnvFile) - log.Infof("Search config in %s", confFile) - if common.Exists(confFile) { + cf := path.Join(d, xdsEnvFile) + log.Infof("Search config in %s", cf) + if common.Exists(cf) { + confFile = cf break } }