2010-11-22 6 views
5

Ich habe eine Konsolenanwendung, die mit einem E/A-Fehler 6 abstürzt, wenn die Ausgabe in eine Datei umgeleitet wird. Es hat wahrscheinlich etwas damit zu tun, dass die Konsolenanwendung die Textfarbe ändert, was in einer Datei wenig Sinn macht.Wie Debuggen einer Delphi-Anwendung mit umgeleiteter Ausgabe

  • Dies funktioniert: c:\dir\app.exe
  • Diese Abstürze: c:\dir\app.exe >out.txt

Wenn ich >out.txt als Parameter in der IDE (run\parameters\parameters\) liefern, bekomme ich nur >out.txt als Parameter.

Wie kann ich die Anwendung debuggen mit der stdout in eine Datei statt der Konsole umgeleitet?

Antwort

12

Umleitung wird durch den Kommandozeileninterpreter gemacht, in den Fenstern ist es cmd.exe

Debug Starten Sie einfach eine cmd.exe mit propers-Argumenten, um Ihre Anwendung zu starten und die Ausgabe umzuleiten, zum Beispiel:

cmd.exe/c "yourapplication.exe> ​​redirect.txt"

diese von innen IDE, um zu debuggen geschehen zu lassen, konfigurieren Sie cmd.exe als Host-Anwendung (Run/Parameter):

Run/Parameters dialog

einen Haltepunkt, wo Sie aufhören wollen, und starten ein neuer cmd.exe (Projekt/Load-Prozess) mit „zur ersten Quelle Run“ nach Last Aktion:

Load process dialog

und fertig ... muss der Debugger die Anwendung an Ihrem Haltepunkt stoppen.

2

Sie können Remote-Debugging versuchen:

  • zu Beginn der Anwendung, fügen Sie ein ReadLn; die Ihnen Zeit zum Prozess anhängen gibt aus Delphi

  • die Anwendung von einem Befehl starten Zeile (unter Angabe des Parameters> out.txt)

  • in Delphi eine Verbindung mit dem App-Prozess herstellen (Run | Attach to Process...), einen Haltepunkt setzen und dann zu der Anwendung wechseln, die eingegeben werden soll ein Schlüssel

Hinweis: ein Debugger-Breakpoint auch im Code festgelegt werden können:

asm 
    int 3 
end; 
0

Stellen Sie sicher, dass es aufgrund von Verzeichnisberechtigungen nicht fehlschlägt. Qualifizieren Sie den Pfad der Ausgabedatei vollständig für einen Ort, den Sie garantiert schreiben können. Andernfalls kann Windows7 Spiele mit dem Verzeichnis spielen. (VirtualStore Zeug).