Forum: PC-Programmierung Eclipse: CMD Anwenung debuggen


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander

Ich habe bis jetzt nur mit Mikrocontrollern und Programmen mit GUI 
debugging betrieben. Nun möchte ich kleine CMD-Programme debuggen.
Kann mir jemand sagen, wie ich das anstellen soll? Wenn ich mein 
Programm debuggen will, öffnet sich die Konsole nicht mehr, und ich kann 
keine Benutzereingaben machen.


Besten Dank für die Hilfe
MFG
Patrick

von Christian R. (supachris)


Lesenswert?

Vielleicht wird ja stdout und stdin zur Eclipse-eigenen Konsole 
umgelenkt, und du hast die in deiber Debug View bloß nicht aktiviert?

von Patrick B. (p51d)


Lesenswert?

Doch, ist aktiviert. nur scheint es, dass hier Eclipse schon seit 4 
Jahren einen riesen Bug in der Konsole hat (auf Windows):
1
printf("Hallo Welt\r\nWer bist du?");
2
scanf("%s", &Name);
3
printf("Hallo %s", Name);

Hier wird nur gerade "Hallo Welt" ausgegeben, und der Rest kommt erst 
nachdem ich einen Text eingegeben habe.

Und irgendwie hat es bis jetzt keine Lösung gegeben.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=173732
Nur scheint es bei mir nicht zu funktionieren.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Patrick B. schrieb:
> Und irgendwie hat es bis jetzt keine Lösung gegeben

Dafür ein Workaround:
1
If i use fflush(stduot) after each printf explicitly everythings works fine
oder
1
According to Jordan Rhee (in bug 184582), this behavior is not ANSI-compliant.
2
I didn't verify this. He proposes to use "setvbuf(stdout, NULL, 0, _IONBF);", which is a great workaround for me.

Patrick B. schrieb:
> nur scheint es, dass hier Eclipse schon seit 4 Jahren einen riesen Bug
> in der Konsole hat (auf Windows)

Das Problem ist aber eher Windows als Eclipse:
1
The problem is: The eclipse console is not a terminal.
2
On unix systems, the method of choice is to create a pseudo
3
terminal (pty) and connect the child process stdio to it.
4
This way the child process behaves exactly in the same way
5
as in an interactive terminal.
6
CDT does exactly that for Linux, Mac OS X, Solaris and some
7
other supported platforms.  We don't have a Pty (or something
8
of that kind) on Windows, therefore interactive console mode
9
programs don't work as expected.

: Bearbeitet durch User
von Patrick B. (p51d)


Lesenswert?

Nur funktionieren diese Workarounds nicht (Ich nutze Win 8 64Bit):

ich habe dies versucht, leider ohne Erfolg:
1
printf("Hallo Welt\r\nName:");
2
fflush(stdout);
3
scanf("%s", &Name);
1
setvbuf(stdout, NULL, 0, _IONBF);
2
setvbuf(stderr, NULL, 0, _IONBF);
3
printf("Hallo Welt\r\nName:");
4
scanf("%s", &Name);
1
setvbuf(stdout, NULL);
2
printf("Hallo Welt\r\nName:");
3
scanf("%s", &Name);

Bei Eclipse kann man ja sagen, dass die Exe-Datei nicht im Editor 
geöffnet werden soll, sondern dass er diese über die Konsole öffnet. 
Geht das beim Debuggen auch, damit nicht die Eclipse-Konsole verwendet 
wird?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Im Prinzip ruft Eclipse nur Komandozeilenprogramme auf. Wenn also das 
Programm "Debugger" das unterstützt sollte es gehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.