Don't try to send signal while gdb is not started.
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 30 Aug 2017 16:29:00 +0000 (18:29 +0200)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Wed, 30 Aug 2017 16:29:00 +0000 (18:29 +0200)
Makefile
gdb-native.go
gdb-xds.go

index ee8e5e2..e4973ad 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -94,6 +94,7 @@ package-all:
        @echo " WARNING: build on Windows not supported for now."
        @echo "# Build darwin amd64..."
        GOOS=darwin GOARCH=amd64 RELEASE=1 make -f $(ROOT_SRCDIR)/Makefile package
+       make -f $(ROOT_SRCDIR)/Makefile clean
 
 vendor: tools/glide glide.yaml
        ./tools/glide install --strip-vendor
index a4e6189..4bae3d3 100644 (file)
@@ -151,6 +151,9 @@ func (g *GdbNative) Write(args ...interface{}) error {
 
 // SendSignal is used to send a signal to remote process/gdb
 func (g *GdbNative) SendSignal(sig os.Signal) error {
+       if g.exeCmd == nil {
+               return fmt.Errorf("exeCmd not initialized")
+       }
        return g.exeCmd.Process.Signal(sig)
 }
 
index bb8ad2f..22e13ed 100644 (file)
@@ -76,6 +76,9 @@ func (g *GdbXds) SetConfig(name string, value interface{}) error {
 // Init initializes gdb XDS
 func (g *GdbXds) Init() (int, error) {
 
+       // Reset command ID (also used to enable sending of signals)
+       g.cmdID = ""
+
        // Define HTTP and WS url
        baseURL := g.uri
        if !strings.HasPrefix(g.uri, "http://") {
@@ -167,6 +170,7 @@ func (g *GdbXds) Close() error {
        g.cbOnExit = nil
        g.cbRead = nil
        g.cbInferiorRead = nil
+       g.cmdID = ""
 
        return nil
 }
@@ -285,6 +289,10 @@ func (g *GdbXds) Write(args ...interface{}) error {
 
 // SendSignal is used to send a signal to remote process/gdb
 func (g *GdbXds) SendSignal(sig os.Signal) error {
+       if g.cmdID == "" {
+               return fmt.Errorf("cmdID not set")
+       }
+
        var body []byte
        body, err := json.Marshal(apiv1.ExecSignalArgs{
                CmdID:  g.cmdID,