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
Vielleicht wird ja stdout und stdin zur Eclipse-eigenen Konsole umgelenkt, und du hast die in deiber Debug View bloß nicht aktiviert?
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.