Hallo,
ich möchte eine Konsolenanwendung debuggen, die ihre Eingabe per Dateiumleitung erhält. Wird die Anwendung von der Kommandozeile heraus aufgerufen, funktioniert das auch. Im integrierten Debugger mit entsprechenden Startparametern allerdings nicht - dort wartet die Anwendung dann auf eine Tastatureingabe.
Delphi-Quellcode:
Program Redirect;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
Line :
string;
begin
try
Readln(Line);
writeln('
Output', Line);
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
end.
Start -> Parameter : <input.txt
Inhalt der Datei: Eingabe<CR/LF>
Die einzige Möglichkeit die ich bisher gefunden habe, ist das Einfügen einer Warteschleife:
Delphi-Quellcode:
{$ifdef DEBUG}
writeln('
Debugger');
while not IsDebuggerPresent
do
begin
Sleep(100);
end;
asm
int 3;
end;
{$endif}
Dann wird die Anwendung auf der Kommandozeile gestartet und über Start->Mit Prozess verbinden funktioniert es.
Ebenfalls ausprobiert habe ich es mit cmd.exe /c als Hostanwendung, das Verhalten ändert sich aber nicht.
Wie kriege ich das mit dem integrierten Debugger und direktem Start hin?