Signale beim Debuggen

Entwickle ich eine Anwendung (ein Dienst/daemon, wirklich) auf Linux in C++, muss die Schnittstelle mit einem Stück hardware. Wenn mein Programm nicht lassen Sie die Mittel für dieses Stück hardware sauber bei der Kündigung, dann muss ich neu laden der Gerätetreiber, ein Prozess, der dauert etwa 10 Minuten und aus offensichtlichen Gründen zu müssen, warten Sie 10 Minuten zwischen jeder test des Programms wäre frustrierend.

So, ich habe das sigaction() Funktion zum abfangen einer SIGINT (Strg-c), so dass mein Programm kann sauber Herunterfahren, wenn ich fertig bin mit ihm. Beim ausführen des Programms aus der Konsole, diese funktioniert einwandfrei. Allerdings, wenn das Debuggen in Netbeans oder Eclipse (ich habe beides ausprobiert) Dinge, die nicht funktionieren.

  • In Eclipse, wenn ich mit Strg-c in der Konsole, Sie bietet es scheint nicht zu registrieren, dass ein SIGINT jemals aufgetreten
  • In Eclipse, wenn ich das Programm im debug-Modus, und verwenden Sie dann kill -SIGINT <pid>, das Programm bricht als wenn es einen Haltepunkt erreicht
  • Netbeans scheint tatsächlich so zu realisieren, ein signal wurde gesendet, wenn ich mit Strg-c in der Konsole, und öffnet sich ein Dialogfenster gefragt, ob ich will leitet es an die Anwendung. Klick auf die "weiter und weiter" scheint nur zu brechen, das Programm und das signal nicht empfangen wird, durch die Anwendung. Er sagt auch, ich kann konfigurieren dieses Zeug im Debug -> Dbx konfigurieren, ein Menüpunkt, der nicht existiert
  • In Netbeans, wenn ich das Programm im debug-Modus, und verwenden Sie dann kill -SIGINT <pid>, das Verhalten ist das gleiche wie oben
  • Ich dann noch ein SIGQUIT-handler und versucht, den Versand, die über kill beim Debuggen in Netbeans. Dieser Zeit, wird kein Dialogfeld angezeigt und die signal-handler wird nie ausgelöst.

Brauche ich einige Weg, um sauber Herunterfahren meine app während ich das Debuggen. Irgendwelche Ideen?

InformationsquelleAutor Frederik | 2011-05-26
Schreibe einen Kommentar