Teil I Debuggen mit gdb

Größe: px
Ab Seite anzeigen:

Download "Teil I Debuggen mit gdb"

Transkript

1 Teil I Debuggen mit gdb

2 Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden

3 Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden

4 Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden

5 Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden

6 Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden

7 Was ist ein Debugger? Ein Debugger ermöglicht das Auffinden von Bugs im Code ohne das Programm verändern zu müssen. Dazu wird das Programm im Debugger ausgeführt Ein Sourcelevel-Debugger ermöglicht das einzelne Ausführen von Codezeilen und das Anzeigen von Variablenwerten

8 Was ist ein Debugger? Ein Debugger ermöglicht das Auffinden von Bugs im Code ohne das Programm verändern zu müssen. Dazu wird das Programm im Debugger ausgeführt Ein Sourcelevel-Debugger ermöglicht das einzelne Ausführen von Codezeilen und das Anzeigen von Variablenwerten

9 Was ist ein Debugger? Ein Debugger ermöglicht das Auffinden von Bugs im Code ohne das Programm verändern zu müssen. Dazu wird das Programm im Debugger ausgeführt Ein Sourcelevel-Debugger ermöglicht das einzelne Ausführen von Codezeilen und das Anzeigen von Variablenwerten

10 gdb(1) (Der GNU Debugger) ist ein portabler Debugger für Unix Systeme Aufruf: gdb programmname Für Details: $ man gdb Damit man ein Programm debuggen kann muss es mit der -g Option kompiliert werden. Beispiel: $ gcc -g main.c -o main

11 gdb(1) (Der GNU Debugger) ist ein portabler Debugger für Unix Systeme Aufruf: gdb programmname Für Details: $ man gdb Damit man ein Programm debuggen kann muss es mit der -g Option kompiliert werden. Beispiel: $ gcc -g main.c -o main

12 gdb(1) (Der GNU Debugger) ist ein portabler Debugger für Unix Systeme Aufruf: gdb programmname Für Details: $ man gdb Damit man ein Programm debuggen kann muss es mit der -g Option kompiliert werden. Beispiel: $ gcc -g main.c -o main

13 Folgendes Programm stürzt dauernd ab int main ( void ) { char *s; strcpy (s, " Hello, World \n"); printf (s ); return 0; } Kompilieren: $ gcc -g main.c -o main Laden wir es einmal in gdb: $ gdb./main

14 Folgendes Programm stürzt dauernd ab int main ( void ) { char *s; strcpy (s, " Hello, World \n"); printf (s ); return 0; } Kompilieren: $ gcc -g main.c -o main Laden wir es einmal in gdb: $ gdb./main

15 Folgendes Programm stürzt dauernd ab int main ( void ) { char *s; strcpy (s, " Hello, World \n"); printf (s ); return 0; } Kompilieren: $ gcc -g main.c -o main Laden wir es einmal in gdb: $ gdb./main

16 gdb./ main GNU gdb debian [...] ( gdb ) Was nun? Zuerst breakpoint auf eine Funktion mit break setzen z.b. auf die main Funktion: break main Danach mittels run ausführen

17 gdb./ main GNU gdb debian [...] ( gdb ) Was nun? Zuerst breakpoint auf eine Funktion mit break setzen z.b. auf die main Funktion: break main Danach mittels run ausführen

18 gdb./ main GNU gdb debian [...] ( gdb ) Was nun? Zuerst breakpoint auf eine Funktion mit break setzen z.b. auf die main Funktion: break main Danach mittels run ausführen

19 gdb./ main GNU gdb debian [...] ( gdb ) Was nun? Zuerst breakpoint auf eine Funktion mit break setzen z.b. auf die main Funktion: break main Danach mittels run ausführen

20 gdb./ main GNU gdb debian [...] ( gdb ) Was nun? Zuerst breakpoint auf eine Funktion mit break setzen z.b. auf die main Funktion: break main Danach mittels run ausführen

21 ( gdb ) break main Breakpoint 1 at 0 x : file main.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at main. c:3 3 strcpy (s, " Hello, World \n"); ( gdb ) Das Programm stoppt beim Breakpoint und wir können uns jetzt die einzelnen Variablen ansehen (mittels print) z.b. print s um den Wert der Variablen s auszugeben

22 ( gdb ) break main Breakpoint 1 at 0 x : file main.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at main. c:3 3 strcpy (s, " Hello, World \n"); ( gdb ) Das Programm stoppt beim Breakpoint und wir können uns jetzt die einzelnen Variablen ansehen (mittels print) z.b. print s um den Wert der Variablen s auszugeben

23 ( gdb ) break main Breakpoint 1 at 0 x : file main.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at main. c:3 3 strcpy (s, " Hello, World \n"); ( gdb ) Das Programm stoppt beim Breakpoint und wir können uns jetzt die einzelnen Variablen ansehen (mittels print) z.b. print s um den Wert der Variablen s auszugeben

24 ( gdb ) print s $4 = 0x0 ( gdb ) s == NULL Wir versuchen also strcpy auf einen NULL-Pointer anzuwenden (d.h. s wurde vergessen zu initialisieren)

25 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

26 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

27 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

28 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

29 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

30 . Die wichtigsten gdb-befehle: break Funktionsname: Breakpoint auf Funktionsnamen setzen (oder auch Zeilennummer) next: Nächste Codezeile ausführen step: Nächste Codezeile ausführen und wenn diese ein Funktionsaufruf ist, dann in die Funktion springen continue: Programm fortsetzen print: Variable oder Expression ausgeben (printf()-like Syntax)

31 Folgender Code... int main ( void ) { int c = 1234; char buffer [12]; strcpy ( buffer, " Hello, World \n"); printf ("%d\n", c ); return 0; } liefert ein merkwürdiges Eregbnis: 10 obwohl c doch mit 1234 initialisiert wurde!?

32 Wie können wir herausfinden wo das Problem liegt? Lösung 1: Durch das Programm steppen (mittels next und step) Lösung 2: Watch-Points

33 Wie können wir herausfinden wo das Problem liegt? Lösung 1: Durch das Programm steppen (mittels next und step) Lösung 2: Watch-Points

34 Wie können wir herausfinden wo das Problem liegt? Lösung 1: Durch das Programm steppen (mittels next und step) Lösung 2: Watch-Points

35 Mit next wird die nächste Codezeile ausgeführt $ gdb./ main [...] ( gdb ) break main Breakpoint 1 at 0 x : file overflow.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" );

36 Mit next wird die nächste Codezeile ausgeführt $ gdb./ main [...] ( gdb ) break main Breakpoint 1 at 0 x : file overflow.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" );

37 Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" ); ( gdb ) print c $1 = 1234 ( gdb ) next 6 printf ("%d\n", c); ( gdb ) print c $2 = 10

38 Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" ); ( gdb ) print c $1 = 1234 ( gdb ) next 6 printf ("%d\n", c); ( gdb ) print c $2 = 10

39 Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" ); ( gdb ) print c $1 = 1234 ( gdb ) next 6 printf ("%d\n", c); ( gdb ) print c $2 = 10

40 Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) next 5 strcpy ( buffer, " Hello, World \n" ); ( gdb ) print c $1 = 1234 ( gdb ) next 6 printf ("%d\n", c); ( gdb ) print c $2 = 10

41 watch stoppt das Programm sobald eine beobachtete Variable verändert wurde. Es wird aber erst die Codezeile nach der Veränderung angezeigt

42 Möglichkeit 2: watch ( gdb ) break main Breakpoint 1 at 0 x : file overflow.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) watch c Hardware watchpoint 2: c ( gdb ) cont Continuing. Hardware watchpoint 2: c Old value = 1234 New value = 10 main () at overflow. c:6 6 printf ("%d\n", c);

43 Möglichkeit 2: watch ( gdb ) break main Breakpoint 1 at 0 x : file overflow.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) watch c Hardware watchpoint 2: c ( gdb ) cont Continuing. Hardware watchpoint 2: c Old value = 1234 New value = 10 main () at overflow. c:6 6 printf ("%d\n", c);

44 Möglichkeit 2: watch ( gdb ) break main Breakpoint 1 at 0 x : file overflow.c, line 3. ( gdb ) run Starting program : / tmp / main Breakpoint 1, main () at overflow. c :3 3 int c = 1234; ( gdb ) watch c Hardware watchpoint 2: c ( gdb ) cont Continuing. Hardware watchpoint 2: c Old value = 1234 New value = 10 main () at overflow. c:6 6 printf ("%d\n", c);

45 Was aber tun wenn der Fehler irgendwo im Programm liegt? Das ganze Programm im Single-Step Modus durchgehen kann ewig dauern! Alles kein Problem: Der Debugger zeigt automatisch die richtige Zeile wo z.b. ein Segmentation Fault aufgetreten ist

46 Was aber tun wenn der Fehler irgendwo im Programm liegt? Das ganze Programm im Single-Step Modus durchgehen kann ewig dauern! Alles kein Problem: Der Debugger zeigt automatisch die richtige Zeile wo z.b. ein Segmentation Fault aufgetreten ist

47 Was aber tun wenn der Fehler irgendwo im Programm liegt? Das ganze Programm im Single-Step Modus durchgehen kann ewig dauern! Alles kein Problem: Der Debugger zeigt automatisch die richtige Zeile wo z.b. ein Segmentation Fault aufgetreten ist

48 . In diesem Programm tritt ein Fehler auf... # include <... >... int foobar ( int x) { char *s; strcpy (s, " Hello, World \n"); printf ("%d\n", x ); return 0; }... int main () {... foobar (1234);... }

49 $ gdb./ main GNU gdb debian [...] ( gdb ) run Starting program : / tmp / main Program received signal SIGSEGV, Segmentation fault. 0 x in foobar () at main. c :28 28 strcpy (s, " Hello, World \n"); ( gdb ) Voila, wir sehen sofort an welcher Zeile das Problem auftritt

50 $ gdb./ main GNU gdb debian [...] ( gdb ) run Starting program : / tmp / main Program received signal SIGSEGV, Segmentation fault. 0 x in foobar () at main. c :28 28 strcpy (s, " Hello, World \n"); ( gdb ) Voila, wir sehen sofort an welcher Zeile das Problem auftritt

51 $ gdb./ main GNU gdb debian [...] ( gdb ) run Starting program : / tmp / main Program received signal SIGSEGV, Segmentation fault. 0 x in foobar () at main. c :28 28 strcpy (s, " Hello, World \n"); ( gdb ) Voila, wir sehen sofort an welcher Zeile das Problem auftritt

52 Zusammenfassung Debugger helfen beim Auffinden von Fehlern nicht vergessen mit -g zu kompilieren gdb Tutorial: davis/30/gdb Tutorial.htm (englisch)

53 Zusammenfassung Debugger helfen beim Auffinden von Fehlern nicht vergessen mit -g zu kompilieren gdb Tutorial: davis/30/gdb Tutorial.htm (englisch)

54 Zusammenfassung Debugger helfen beim Auffinden von Fehlern nicht vergessen mit -g zu kompilieren gdb Tutorial: davis/30/gdb Tutorial.htm (englisch)

55 Vielen Dank für die Aufmerksamkeit

Debugging mit GDB Albrecht Oster Proseminar C - Grundlagen und Konzepte

Debugging mit GDB Albrecht Oster Proseminar C - Grundlagen und Konzepte Debugging mit GDB Albrecht Oster Proseminar C - Grundlagen und Konzepte Inhaltsverzeichnis 1 Was ist Debugging? 2 1.1 Fallbeispiel 3 1.2 Mögliche Vorgehensweise zur Ursachenfindung 4 2 Was ist GDB? 5 2.1

Mehr

http://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu

http://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu gdb: debugging code In der Vorlesung hatte ich Teile von http://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu und ein eigenes Beispiel diskutiert. Ein Debugger soll helfen Fehler im Programm, die sich

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm E 3. Übung E 3. Übung Besprechung 1. Aufgabe Aufgabe 3: malloc Debugger gdb E.1 1. Include, Deklarationen #include #include void append_element(int value); int remove_element(void);

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Fehlererkennung. C - Kurs September This work is licensed under a Creative Commons AttributionNonComercialShareAlike 3.0 License.

Fehlererkennung. C - Kurs September This work is licensed under a Creative Commons AttributionNonComercialShareAlike 3.0 License. Fehlererkennung C - Kurs 2012 13. September 2012 This work is licensed under a Creative Commons AttributionNonComercialShareAlike 3.0 License. 1 / 80 Inhaltsverzeichnis 1 Fehlerarten Syntaxfehler Logikfehler

Mehr

Kurzeinführung in C99

Kurzeinführung in C99 Kurzeinführung in C99 Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Compiler und Editoren - Was wird benötigt um ein Programm zu erstellen 2

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Debugging mit ddd (Data Display Debugger)

Debugging mit ddd (Data Display Debugger) Debugging mit ddd (Data Display Debugger) 1 Testprogramm installieren und ausführen Laden Sie sich das Fortran Programm sample.f90 und das Makefile herunter und speichern Sie sie in einem Verzeichnis.

Mehr

Übung zu Grundlagen der Betriebssysteme. 3. Übung 30.10.2012

Übung zu Grundlagen der Betriebssysteme. 3. Übung 30.10.2012 Übung zu Grundlagen der Betriebssysteme 3. Übung 30.10.2012 Aufgabe 1 Schließen Sie sich über die URL http://userpages.uni-koblenz.de/~mips/bs/anmeldung/ Bearbeitungsgruppen bestehend aus 3 Teilnehmern

Mehr

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1 (SP1) Übungen zu Systemprogrammierung 1 (SP1) B1 Debugging Jens Schedel, Christoph Erhardt, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme 03-B1_handout Friedrich-Alexander-Universität

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Programmieren in C Signale, Bitfelder, Unionen Fehler, Debugging, Profiling

Programmieren in C Signale, Bitfelder, Unionen Fehler, Debugging, Profiling Programmieren in C Signale, Bitfelder, Unionen Fehler, Debugging, Profiling Hochschule Fulda FB AI Wintersemester 2014/15 http://c-ai.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ Signale 1 Signal Systemnachricht

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])

Mehr

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11 Mapra: C++ Teil 2 Felix Gruber, Sven Groß IGPM 2. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 1 / 11 Themen vom letzten Mal Kontrollstrukturen Funktionen const Referenzen Zeiger

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Inhaltsverzeichnis. 1 Einleitung 2

Inhaltsverzeichnis. 1 Einleitung 2 Inhaltsverzeichnis 1 Einleitung 2 2 Installation 3 2.1 Windows............................................. 3 2.1.1 Yasm per Konsole nutzen............................... 3 2.1.2 Integration mit Visual

Mehr

Tools zur Programmierung mit C Software Entwicklung 1

Tools zur Programmierung mit C Software Entwicklung 1 Tools zur Programmierung mit C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Inhaltsverzeichnis 1 Compiler 1 1.1 Installation.................................. 2 1.1.1 Installation

Mehr

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Fehler abfangen Leibniz Universität IT Services Anja Aue Warnungen Hinweise auf riskanten Code. Eine Kompilierung wird nicht verhindert. Um größere Fehler zu

Mehr

Programmieren in Haskell Debugging

Programmieren in Haskell Debugging Programmieren in Haskell Debugging Peter Steffen Universität Bielefeld Technische Fakultät 30.01.2009 1 Programmieren in Haskell Debugger Definition laut Wikipedia: Ein Debugger (von engl. bug im Sinne

Mehr

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Debuggen mit GDB (Gnu DeBugger) unter Eclipse Debuggen mit GDB (Gnu DeBugger) unter Eclipse Boris Budweg, 16.11.2009 Version 0.4 Abstract: Kleine Einführung in die Bedienung des GDB über Eclipse und die Möglichkeiten eines Debuggers. Viele Screenshots

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 11. Vorlesung 14.06.2017 1 Schleifen 2 do...while do block while ( bedingung ); block: eine Anweisung oder Anweisungen in { block bed JA NEIN 3 while while ( bedingung ) block

Mehr

Installationsanleitung

Installationsanleitung 1. C Installationsanleitung C-Programmierung mit Hilfe von Eclipse unter Windows XP mit dem GNU C-Compiler (GCC) 2. Inhaltsverzeichnis 1. Einleitung... 3 2. Cygwin... 3 2.1 Cygwin-Installation... 3 2.2

Mehr

225. gdb der Gnu Debugger

225. gdb der Gnu Debugger 225. gdb der Gnu Debugger Debuggen Oftmals enthält ein Programm einen Fehler, und man findet den Fehler nicht sofort. Eine Möglichkeit besteht aus vielen printf-anweisungen in dem Quelltext. Eleganter

Mehr

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45 7 Programmverstehen + Fehlersuche Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging Grundkurs C++ Debugging Berühmte Software-Bugs 1947: Fehlfunktion des Mark II Relay Calculator aufgrund einer Motte. Grundkurs C++ 6 Berühmte Software-Fehler 1996: Ariane 5 muss 40 Sekunden nach dem Start

Mehr

Übung zur Vorlesung Programmieren in C

Übung zur Vorlesung Programmieren in C Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung

Mehr

Kurzanleitung zur Benutzung der Entwicklungsumgebung Code::Blocks für die Übung aus Programmieren 1 und 2

Kurzanleitung zur Benutzung der Entwicklungsumgebung Code::Blocks für die Übung aus Programmieren 1 und 2 Kurzanleitung zur Benutzung der Entwicklungsumgebung Code::Blocks für die Übung aus Programmieren 1 und 2 Institut für Mikroelektronik, TU Wien 8. Oktober 2009 Dieses Dokument ist für den schnellen Einstieg

Mehr

Erste Schritte mit Eclipse

Erste Schritte mit Eclipse Erste Schritte mit Eclipse März 2008, KLK 1) Java Development Kit (JDK) und Eclipse installieren In den PC-Pools der HAW sind der JDK und Eclipse schon installiert und können mit dem Application Launcher

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Kurzanleitung CodeBlocks zur C-Programmierung. In dieser Kurzanleitung wird anhand zweier Beispiele beschrieben, wie C-Programme mit der

Kurzanleitung CodeBlocks zur C-Programmierung. In dieser Kurzanleitung wird anhand zweier Beispiele beschrieben, wie C-Programme mit der Fakultät für Ingenieurwissenschaften und Informatik Labor für Digital- und Mikroprozessortechnik, Juli 2015 Kurzanleitung CodeBlocks zur C-Programmierung In dieser Kurzanleitung wird anhand zweier Beispiele

Mehr

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung

Mehr

Compiler Präprozessor Header Files

Compiler Präprozessor Header Files Freitagsrunde C-Kurs 2013 Compiler Präprozessor Header Files Tutorium 3 This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License Gliederung Compiler Präprozessor

Mehr

... Trigger - Fehlersuche (Debugging)

... Trigger - Fehlersuche (Debugging) 14... Trigger - Fehlersuche (Debugging) Kapitel 14: Trigger - Fehlersuche (Debugging) Ziele Am Ende dieser Unterrichtseinheit verfügen Sie über folgende Kenntnisse: Die Debugger-Komponenten Form-Modul

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi Grundlagen der Programmierung 1 WS 2012/2013 Prof. Dr. Stefan Böttcher Aufgabenblatt 1: - Präsenzübung für die Übungen Do. 11.10.- Mi. 17.10.2012 Ausgabe Mi. 10.10.2012 1.1. Zahlen vertauschen mit wenigen

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

TA Hacke Dein bewaffnen Sie!

TA Hacke Dein bewaffnen Sie! What can possibly go wrong? _john mcacicl: jdodhcn3@dt2u3x4c2ofdneo.rodreg (nur jeden 2. buchstaben lesen ) Juli 2012 Einleitung gdb Kerndetails Rinde M{3,4} Programmerzeugung in C (GNU Toolchain) Quellcode

Mehr

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1 Exceptions CoMa-Übung VII TU Berlin 7.11.013 CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 1 / 1 Themen der Übung 1 Compilezeit- und Laufzeitfehler Exceptions 3 Try-Catch-Finally CoMa-Übung VII (TU Berlin)

Mehr

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 5. Vorlesung 09.11.2016 1 Beispiel: Hello World #include Beginn Hauptprogramm int main() { Blockbeginn printf("hello World\n"); Einbinden der Headerdatei(en) für

Mehr

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis

Mehr

PIC16 Programmierung in HITECH-C

PIC16 Programmierung in HITECH-C PIC16 Programmierung in HITECH-C Operatoren: Arithmetische Operatoren - binäre Operatoren + Addition - Subtraktion * Multiplikation / Division % Modulo + - * / sind auf ganzzahlige und reelle Operanden

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

ubasic Port für STM32F4 von Uwe Becker

ubasic Port für STM32F4 von Uwe Becker ubasic Port für STM32F4 von Uwe Becker Das original ubasic von Adam Dunkels findet sich unter : http://dunkels.com/adam/ubasic/ Die Minimal -Version vom ubasic-port für den STM32F4 beinhaltet folgendes

Mehr

C Überlebenstraining

C Überlebenstraining C Überlebenstraining Dies ist nur ein Schnellkurs in C, der genug Einstiegswissen vermitteln soll, daß weiterführende Literatur schnell benutzt werden kann. Dies ist kein vollständiger Programmier oder

Mehr

Einheit 06: Debugging in Eclipse

Einheit 06: Debugging in Eclipse Einheit 06: Debugging in Eclipse L.Raed Ludwig-Maximilians-Universität München Institut für Informatik Programmierung und Softwaretechnik Prof. Wirsing January 22, 2010 L.Raed (LMU/PST) Einheit 06: Debugging

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)

Mehr

Computergrundlagen Programmieren in C

Computergrundlagen Programmieren in C Die Compilersprache C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Geschichte D. M. Ritchie, *1941 1971-73: Entwickelt von

Mehr

Lex und Yacc Lt. Worf, scannen Sie das Schiff! 300dpi, Sir?

Lex und Yacc Lt. Worf, scannen Sie das Schiff! 300dpi, Sir? Lex und Yacc Lt. Worf, scannen Sie das Schiff! 300dpi, Sir? Hagen Paul Pfeifer hagen@jauu.net 29. April 2004 Lex und Yacc Überblick Einführung Lex und Yacc 1 Überblick Einführung Beispiele Lex und Yacc

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Software-Engineering Grundlagen des Software-Engineering

Software-Engineering Grundlagen des Software-Engineering Software-Engineering Grundlagen des Software-Engineering 7.2 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger SWE: 7.2 Programmentwicklung und Debuggen mit IDE

Mehr

2017/01/23 15:50 1/5 Bedienung

2017/01/23 15:50 1/5 Bedienung 2017/01/23 15:50 1/5 Bedienung Bedienung (J.Müller, Hilfe zu JTCEMU) Das originale 2K-System Das 2 KByte große Betriebssystem bietet die wichtigsten Funktionen zur Eingabe und Verwaltung von BASIC-Programmen.

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

Speicherverwaltung in C

Speicherverwaltung in C Speicherverwaltung in C Tobias Gutzmann, Le Xuan Khanh, Robert Hartmann 19.04.2005 Typeset by FoilTEX Inhalt Übersicht der wichtigsten Befehle malloc, free, realloc alloca, obstack, brk Speicherverwaltung

Mehr

Informatik I - Übung 2 Programmieren in Eclipse

Informatik I - Übung 2 Programmieren in Eclipse Informatik I - Übung 2 Programmieren in Eclipse. / Info1 / HelloWorld / HelloWorld Wort1 Wort2 Daniel Hentzen dhentzen@student.ethz.ch 5. März 2014 1.2 Häufigste Fehler im Terminal auf Gross-/Kleinschreibung

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Entwicklung mit mehreren Dateien

Entwicklung mit mehreren Dateien Frühjahrsemester 2011 CS104 Programmieren II Teil II: C++ Programmierung Kapitel 9: Entwicklungsprozess in C++ H. Schuldt Entwicklung mit mehreren Dateien In C++ ist es üblich, den Quelltext in mehreren

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1. Praktikum Btib Betriebssysteme t I Hochschule Für Angewandte Wissenschaften FH München Sommersemester 2010 thomas.kolarz@hm.edu Folie 1 Vorbereitung Booten Sie den Rechner unter Linux und melden Sie sich

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

Präprozessor und make. einfache Makros Makros nehmen eine Textersetzung vor. Erst nach der Ersetzung muss gültiger C-Code vorliegen.

Präprozessor und make. einfache Makros Makros nehmen eine Textersetzung vor. Erst nach der Ersetzung muss gültiger C-Code vorliegen. Bevor der eigentliche Kompilier-Vorgang stattfindet, wird vom sogenannten eine Vorverarbeitung durchgeführt. Hierbei werden zum Beispiel Kommentare entfernt, aber auch explizite Anweisungen an den verarbeitet.

Mehr

Abstrakte C-Maschine und Stack

Abstrakte C-Maschine und Stack Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Der Anfänger sollte nicht entmutigt sein, wenn er nicht die Voraussetzungen besitzt, um die Voraussetzungen zu verstehen...

Mehr

Eclipse Tutorial.doc

Eclipse Tutorial.doc Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik Eclipse Tutorial 2005, HTI Burgdorf R. Weber Dateiname: Eclipse

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung Makros Includes Errors und Warnings Pragmas Diverses. Der C-Präprozessor. Lukas Stabe. Universität Hamburg

Einführung Makros Includes Errors und Warnings Pragmas Diverses. Der C-Präprozessor. Lukas Stabe. Universität Hamburg Der C-Präprozessor Lukas Stabe Universität Hamburg Proseminar C - Grundlagen und Konzepte, 2013 Lukas Stabe C-Präprozessor 1 / 19 Inhalt 1. Einführung 2. Makros 3. Includes 4. Errors und Warnings 5. Pragmas

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Debugger. Perl. Einführung in den Perl Debugger. Bevor man den Debugger anwirft. Debugger Starten Features oder Was kann der Debugger?

Debugger. Perl. Einführung in den Perl Debugger. Bevor man den Debugger anwirft. Debugger Starten Features oder Was kann der Debugger? Debugger Einführung in den Perl Debugger Real Programmers don t need debuggers, they can read core dumps. Larry Wall Viele Perl-Programmierer mögen und nutzen den Perl-Debugger aus unterschiedlichsten

Mehr

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung

Mehr

16. März 2016 artb5-v1.1

16. März 2016 artb5-v1.1 C 16. März 2016 artb5-v1.1 Inhaltsverzeichnis C 2 Was ist ein Programm?........................ 2 Was ist C?............................... 3 Grundgerüst - Hallo Welt....................... 3 Tools und

Mehr

0. Einführung & Motivation

0. Einführung & Motivation 0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch

Mehr

Praktikum Ingenieurinformatik. Termin 3. Fehlervermeidung, Fehlersuche, Schleifen (while, do-while, for)

Praktikum Ingenieurinformatik. Termin 3. Fehlervermeidung, Fehlersuche, Schleifen (while, do-while, for) Praktikum Ingenieurinformatik Termin 3 Fehlervermeidung, Fehlersuche, Schleifen (while, do-while, for) 1 1. Fehlervermeidung, Fehlersuche 2. Schleifen 3. Debugger 2 1.1. Fehlertypen Fehler bei der Problemanalyse

Mehr

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare

Mehr

8.1 Vom Quellcode zur ausführbaren Programm

8.1 Vom Quellcode zur ausführbaren Programm 8. Die Umgebung von C- 8.1 Vom Quellcode zur Programmausführung 8.2 Präprozessor-Anweisungen 8.3 Compiler, Assembler, Binder 8.4 Das Make-Utility 8.5 Datenübergabe vom und zum Betriebssystem 8-1 8.1 Vom

Mehr

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Terminal - historisches (etwas vereinfacht) Seriell. Computer. Netzwerk DFÜ.

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Terminal - historisches (etwas vereinfacht) Seriell. Computer. Netzwerk DFÜ. Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5 Wintersemester 2015/2016 Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 2 21 Terminal

Mehr

System Monitoring mit strace. Systemcall tracing

System Monitoring mit strace. Systemcall tracing System Monitoring mit strace Systemcall tracing 1 Gliederung Einleitung: Was ist strace Grundlagen zu strace Kernel Kernelspace vs. Userspace Systemcalls ptrace Simple strace (Demo) strace die wichtigsten

Mehr

Java-Tutorium WS 09/10

Java-Tutorium WS 09/10 Tutorial: Eclipse Debugger Was ist der Eclipse Debugger? Die Eclipse Plattform stellt einige sehr hilfreiche Features zum Programmieren bereit. Eines dieser Features ist der Debugger. Mithilfe des Debuggers

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen ("struct...")

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen (struct...) Einführung in die Programmierung für Physiker Die Programmiersprache C Strukturen ("struct...") Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2013/14

Mehr

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter}); S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Debugging mit Python

Debugging mit Python Debugging mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Leipzig, Deutschland, 2012-10-31 Debugging mit Python Stefan Schwarzer, info@sschwarzer.com 2 / 23 Überblick Print-Anweisungen

Mehr

Embedded SQL in PostgreSQL

Embedded SQL in PostgreSQL 7. Dezember 2010 Michael Meskes Seit 1993 Freie Software Seit 1994 Linux Seit 1995 Debian GNU/Linux Seit 1998 PostgreSQL Michael Meskes 1992-1996 Promotion 1996-1998 Projektleiter 1998-2000 Niederlassungsleiter

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Wie man eigene Programme erstellt

Wie man eigene Programme erstellt Kapitel 3 Wie man eigene Programme erstellt In diesem Kapitel geht es darum, sich mit einem Compiler vertraut zu machen. Dabei erfahren Sie, wie Sie eigene Programme auf den Systemen Windows und Linux

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen

Mehr