2009-07-09 5 views
3

Gibt es eine Möglichkeit, die minderwertig zu stoppen, ohne Strg + C (oder ein gleichwertiges Signal von einem anderen Prozess gesendet)? Ich verwende eine Windows-Plattform und verwaltet GDB von einem anderen Prozess, so ohne Ahnung von Signalen dass es keine gute Möglichkeit gibt, die Ausführung meines Programms zu unterbrechen, wenn es ohne Breakpoints läuft.Stoppen des minderwertigen Prozesses in GDB OHNE ein Signal?

EDIT FÜR CLARITY:

Es gibt zwei Prozesse hier beteiligt. Es gibt Prozess A, der die Eltern von GDB ist. GDB verwaltet einen Prozess, aber es ist auf einem Remote-Host, und wir rufen diesen Prozess C.

Wenn ich GDB zu "run" sagen, startet es Prozess C auf dem Remote-Host und blockiert entweder bis ein Haltepunkt ist hit, Prozess C trifft auf einen Fehler oder ein fatales Signal, oder GDB selbst erhält ein Interrupt-Signal. Wenn Sie interaktiv arbeiten, drücken Sie einfach STRG + C an der GDB-Befehlskonsole, was GDB als SIGINT interpretiert (irgendwie), was GDB veranlasst, Prozess C anzuhalten. Da ich GDB tatsächlich mit Prozess A verwalte (und mich nicht damit beschäftige) interaktiv bei der Shell) Ich kann nicht sehr gut Strg + C drücken, und da Windows keine native Vorstellung von "Signalen" wie in UNIX hat, kann ich nicht herausfinden, wie GDB zu unterbrechen ist, wenn es auf Prozess C wartet um einen Haltepunkt zu unterbrechen oder zu treffen.

+0

Können Sie das ein wenig besser beschreiben. Sind drei Prozesse beteiligt? Wer ist der Elternteil von wem? – drudru

Antwort

1

Haben Sie versucht, sich die Fernsteuerungsprotokolle anzusehen? zum Beispiel EMACS verwendet MI, um GDB zu steuern, sollten Sie überprüfen, wie/wenn sie einen solchen ctrl-C Mechanismus anbieten, und wie sie es implementieren.

EDIT: scheint es -exec-interrupt zu sein, die die Ausführung unterbricht.

+0

Diese Antwort ist genau richtig. – sehe