2009-04-20 10 views
3

Ich versuche, ein Programm mit Gdb-Modus in Emacs zu debuggen. Es wurde mit g ++ kompiliert, und ich benutze Cygwin. Mein Programm nimmt ein Kommandozeilenargument, und nimmt auch eine Eingabe von stdin, die ich aus einer Datei umleiten, wie folgt aus:gdb akzeptiert stdin Umleitung in Emacs

program.exe inputFile.dat <otherInput.dat 

Das Problem ist, GDB sendet die Zeichenfolge

"<otherInput.dat" 

als Befehlszeilenargument statt stdin umzuleiten. Wie erzwinge ich gdb, stdin umzuleiten?

EDIT:

Innerhalb GDB, ich bin mit dem Befehl:

run inputFile.dat <otherInput.dat 

Es funktioniert nicht, wenn ich gdb außerhalb von Emacs, auch nicht.

EDIT # 2:

DFA wies eine ähnliche Frage aus: How to load program reading stdin and taking parameters in gdb?

Leider ist die akzeptierte Antwort auf diese Frage ist nicht für mich arbeiten ... Könnte es ein Cygwin-bezogene Fehler sein?

+0

Duplikat von [http://stackoverflow.com/questions/455544/how-to-load-program-reading-stdin-and-taking-parameters-in-gdb](http://stackoverflow.com/questions/455544/how-to-load-programm-lesen-stdin-und-nimm-parameter-in-gdb)? – dfa

Antwort

3

Es scheint, dass Sie den run Befehl verwenden:

Sie können Ihr Programm Ein- und/oder Ausgang mit Hilfe von Shell-Umleitung mit dem Laufe> Befehl umleiten. Zum Beispiel

run > outfile 

http://sourceware.org/gdb/current/onlinedocs/gdb_5.html#SEC24

+0

das mache ich, aber es wird nicht umgeleitet. – Colin

+4

Dies ist, warum: http://www.cygwin.com/ml/cygwin/1998-11/msg00978.html 1988 und immer noch nicht behoben, ich denke – Arkadiy

+0

1998 (nicht 88), aber immer noch ... – Gauthier

1

Wenn Sie bash verwenden, können Sie gdb an den Prozess anhängen sofort von PROGRAM ARGS < FILE & jobs -x gdb PROGRAM %1 tun. Abhängig von der Shell, die Sie verwenden, müssen Sie möglicherweise mehr kreative Methoden verwenden (wahrscheinlich mit der Ausgabe von ps -C, die in die Befehlszeile von gdb weitergeleitet wird).