summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-30 18:33:10 +0200
committerSebastien Douheret <sebastien.douheret@iot.bzh>2017-08-30 18:33:10 +0200
commit68f893390feb6d4f442add4ac4152c9cb1112019 (patch)
tree969e6d2c8c9932e28e2015c27439eae7eff25723
parent3c4defb289a37002a924f12632426c5aab6a4f81 (diff)
Add workaround to fix Stop action with Netbeans.v0.1.0
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.
-rw-r--r--main.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/main.go b/main.go
index dc1d25b..d907a44 100644
--- 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)
}