Ich benutze lldb als eigenständiger Debugger in OSX. Ich versuche, eine ausführbare C-Datei zu debuggen, indem ich eine Textdatei als Eingabe benutze. Die LLDB Dokumentation zum Ändern stdin zu einer bestimmten Datei den folgenden Befehl angibt:Kann lldb nicht lesen, um Dateieingabe zu lesen
process launch -i <file>
Mit diesem Befehl, LLDB scheint die angegebene Datei zu ignorieren, anstatt für die Tastatureingabe wartet.
Ist das beabsichtigte Verhalten? Wenn ja; Was muss ich tun, damit der Prozess tatsächlich mit meiner gewünschten Eingabedatei arbeitet?
tl; dr: Wie erhalte ich LLDB eine Standard-Terminal Ausführung wie zu imitieren:
./executable < <file>
Um zu verdeutlichen, ist Ihre Anwendung geschrieben, immer von Standard zu lesen? –
@JonathonReinhart Ich nehme an, aber ich bin mir nicht ganz sicher. Das IO meines Programms ist in der von flex und bison generierten Quelle definiert. Ich rufe yyparse() an, welches wiederum yylex() aufruft, was die IO machen sollte. Die ausführbare Datei wurde jedoch außerhalb des Debuggers mit der Textdatei als stdin ausgeführt und verhält sich wie beabsichtigt. Es wurde folgendermaßen gemacht: ./executable outputfile.txt –
'./executable infile.txt outfile.txt' bedeutet ** not ** bedeutet, dass das Programm von stdin liest. Tatsächlich impliziert es das Gegenteil - dass das Programm einen Dateinamen in der Befehlszeile erwartet. Sie müssen sich das 'int main' für Ihr Programm ansehen und es zuerst verstehen. –