Add workaround to fix Stop action with Netbeans. v0.1.0
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 30 Aug 2017 16:33:10 +0000 (18:33 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 30 Aug 2017 16:33:10 +0000 (18:33 +0200)
Netbeans sends -gdb-exit command when user press stop button. But this command is not processed by remote gdb if debugged program is running. So send a SIGINT signal to interrupt program before sending/executing -gdb-exit command.

main.go

diff --git a/main.go b/main.go
index dc1d25b..d907a44 100644 (file)
--- a/main.go
+++ b/main.go
@@ -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)
                                }