Showing posts with label C. Show all posts
Showing posts with label C. Show all posts

Saturday, 21 January 2012

Breakpoint Problem mit Eclipse GDB (GSF)

Windows 7 SP1 32Bit
Eclipse IDE for C/C++ Developers Indigo Service Release 1
MinGW 20111118

Probiert man in Eclipse C Code zu debuggen verwendet man normalerweise GDB, in meinem Fall blieb der Debugger zwar am ersten Breakpoint stehen, läßt man das Teil weiterlaufen kommt diese Meldung in der Eclipse Console:

*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={addr="0x004013fe",func="main",args=[],file="..\src\bsp10022.c",fullname="c:\ws\wsc\bsp10022\src\bsp10022.c",line="14"},thread-id="1",stopped-threads="all"
Die Einstellungen sagten mir daß ich GDB verwende:



Auch in verschiedensten Foren fand ich keine Hilfe. Dann kommentierte ich diese beiden Zeilen aus:

 setvbuf(stdout, NULL, _IONBF, 0);
 setvbuf(stderr, NULL, _IONBF, 0);

die aufgrund dieses Problems eingefügt hatte: Keine Ausgabe in der Eclipse Console für printf

Schon reagiert der Debugger wie erwartet.


Links:
GDB Homepage

Friday, 20 January 2012

Keine Ausgabe in der Eclipse Console für printf

Windows 7 SP1
Eclipse IDE for C/C++ Developers Version: Indigo Service Release 1

Verwendet man unter Windows printf in seinem C Programm und erwartet sich beim Ausführen eine Ausgabe auf der Eclipseconsole muß darauf warten bis das Programm beendet ist. Sind noch einige scanf drinnen muß man die Daten "blind" eingeben.

Dieses Verhalten ist dem Windowseclipse geschuldet, Einstellungen wie man dieses Verhalten direkt in Eclipse verändern kann habe ich leider keine gefunden.

Allerdings 2 Wege wie man die Ausgabe trotzdem bekommt.
(Da in der Codedarstellung die spitzen Klammern Probleme machen habe ich in den Codebeispielen das include von stdio.h weggelassen.)

1. fflush(stdout) nach printf();


main(){
 int wahl;
 float betrag;
 printf("\n\tE U R O R E C H N E R\n");
 printf("\n1 DM --> EURO\n2 EURO --> DM");
 printf("\n\nIhre Wahl: ");
 fflush(stdout);
 scanf("%i", &wahl);
 if(wahl == 1){
  printf("Bitte DM-BEtrag eingeben: ");
  fflush(stdout);
  scanf("%f", &betrag);
  printf("\n%.2f DM sind %.2f EURO", betrag, betrag * 0.51129);
 }
 if (wahl == 2){
  printf("Bitte EURO-Betrag eingeben: ");
  fflush(stdout);
  scanf("%f", &betrag);
  printf("\n%.2f EURO sind %.2f DM", betrag, betrag * 1.95583);
 }
}



2. setvbuf in der main methode


main(){
 setvbuf(stdout, NULL, _IONBF, 0);
 setvbuf(stderr, NULL, _IONBF, 0);
 int wahl;
 float betrag;
 printf("\n\tE U R O R E C H N E R\n");
 printf("\n1 DM --> EURO\n2 EURO --> DM");
 printf("\n\nIhre Wahl: ");
 scanf("%i", &wahl);
 if(wahl == 1){
  printf("Bitte DM-BEtrag eingeben: ");
  scanf("%f", &betrag);
  printf("\n%.2f DM sind %.2f EURO", betrag, betrag * 0.51129);
 }
 if (wahl == 2){
  printf("Bitte EURO-Betrag eingeben: ");
  scanf("%f", &betrag);
  printf("\n%.2f EURO sind %.2f DM", betrag, betrag * 1.95583);
 }
}

Links:
Eclipse Forum Eintrag

Saturday, 7 January 2012

C Compiler für Eclipse auf Windows

Windows 7 SP1 32 Bit
Eclipse IDE for C/C++ Developers Indigo Service Release 1
MinGW 20111118

Da Eclipse keinen C Compiler mitliefert muß man diesen selbst installieren. Nachdem mehrere Versuche cygwin zur Zusammenarbeit zu bewegen gescheitert sind bin, versuchte ich es mit MinGW, und siehe da, einfach den Installer ausführen und schon steht einem in Eclipse die entspreche Toolchain zur Verfügung, das Zeug compiliert einwandfrei und auch der Debugger haut hin.

Hier der direkte Link zur letzten Version des Installers: MinGW Installer

Links:
Blogeintrag zu MinGW
MinGW Homepage
Einführung ins Debuggen (pdf)