2010-11-19 1 views
0

Ich möchte einige Debug-Konsole für meine Anwendung machen. Es sollte einige Daten ausgeben und Eingabebefehle nehmen. Wie kann ich das machen? Der beste Weg ist das Aktualisieren der Konsole wie: Zeichnen von Informationen und Aufforderung zur Eingabe nach den Daten. Ich entwickle unter Linux. Zum Beispiel könnte gdb Eingabe von der Konsole nehmen.Konsole für Eingabebefehle

+0

Sie möchten eine Art Eingabeaufforderungskonsole zu Ihrer Nicht-Konsole-Anwendung hinzufügen, ist das korrekt? –

+0

@ john-dibling ja – Ockonal

+0

Und Johns Kommentar oben hinzufügen, wie ist UI angeordnet? Was macht die Anwendung im Allgemeinen? Und ist es akzeptabel (vielleicht vorzuziehen?), Dass die Konsole entfernt ist? –

Antwort

5

Wenn Sie mit der Socket-Programmierung (oder eigentlich jeder anderen Art von IPC-Mechanismus) vertraut sind, möchten Sie vielleicht einen Listener in Ihrer Anwendung aktivieren und eine externe Anwendung entwickeln, die alle "Konsolen" -Einheiten erledigt Sie, während Sie mit der Hauptanwendung kommunizieren.

Nehmen wir an, Sie haben eine Anwendung, die eine einzelne Taste und eine einzelne Textbeschriftung hat, und jedes Mal, wenn Sie diese Taste drücken - die Beschriftung von 1 steigt von 1 bis 2 bis 3 usw.

Sie kann einen Socket-Listener in diese Anwendung einbauen. Wenn der Socket-Listener eine neue eingehende Verbindung akzeptiert, würden Sie einen Anschlussgewinde starten, können:

  1. Sie erhalten einen „Shutdown“ Befehl
  2. einen „Zähler zurücksetzen“ Receive Befehl
  3. ein Update senden über die aktuelle Anzahl auf jedem Klick
  4. usw.

Dann bauen Sie eine andere, externe Anwendung, die auf die Hauptanwendung verbindet, und sendet Nachrichten an sie, basierend auf der Konsole Eingabe es vom Nutzer betrieben wird. Es würde auch eingehende Updates abhören und sie dem Benutzer anzeigen.

eine externe Anwendung verwenden für die Hauptanwendung Debug-Steuerung ist sehr hilfreich, mit den folgenden Gründen nur einige der Vorteile sind:

  1. Egal, wie die Debug-Anwendung Buggy ist, kann es nicht die Release-Version verletzt Ihrer Hauptanwendung.
  2. Der gesamte Code, der sich mit der Konsolenverwaltung befasst, die für Ihre Hauptanwendung redundant ist, kann außerhalb der Haupt-App gespeichert werden.
  3. Die Erstellung von zwei Projekten kann die Zusammenarbeit mit anderen erleichtern, solange Sie beide das Protokoll zwischen den beiden Seiten kennen.
  4. Wenn Sie das, was ich vorgeschlagen habe, implementieren, können Sie Ihre Anwendung remote debuggen, falls Sie keinen Zugriff auf die Hauptanwendung haben (z. B. wenn sie sich auf einer Kunden-Site befindet).
+0

+1 schwer zu implementieren, aber skaliert gut und bietet eine gute Trennung der Verantwortung –

+0

Ich bin eine serverseitige Person :-) Aber ja, ein Nachteil meiner Lösung ist die Komplexität der Implementierung in diesem Fall. –