Teil I Debuggen mit gdb
|
|
- Theodor Baum
- vor 6 Jahren
- Abrufe
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 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
Mehrhttp://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
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);
MehrBeispiel 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
MehrEinfü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).
MehrFehlererkennung. 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
MehrKurzeinfü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
MehrGCC 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
MehrDebugging 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 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) 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
MehrEinfü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:
MehrProgrammieren 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
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[])
MehrMapra: 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
MehrEinfü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:
MehrInhaltsverzeichnis. 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
MehrTools 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
MehrBetriebssysteme. 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
MehrBetriebssysteme. 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 Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen
MehrC++ - 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
MehrProgrammieren 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
MehrDebuggen 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
MehrGrundlagen 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
MehrInstallationsanleitung
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
Mehr225. 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
MehrSoftware 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
MehrLehrstuhl 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 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
MehrKurzanleitung 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
MehrErste 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
MehrEinfü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
MehrKurzanleitung 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
MehrVerwendung 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
MehrCompiler 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)
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
MehrBetriebssysteme, 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/
MehrSoftware-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
MehrHello 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
MehrAufgabenblatt 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
MehrF 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
MehrGrundlagen. 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
MehrTA 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
MehrExceptions. 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)
MehrEinfü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
MehrC-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
MehrGrundlagen 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
MehrEinfü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
MehrPIC16 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
MehrDeklarationen 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.
MehrAssembler - 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
Mehrubasic 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
MehrC Ü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
MehrEinheit 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
MehrGrundlagen 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
Mehr1 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)
MehrComputergrundlagen 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
MehrLex 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
MehrZeichendarstellung. 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
MehrSoftware-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
Mehr2017/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.
MehrInformatik 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
MehrSpeicherverwaltung 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
MehrInformatik 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
MehrEinfü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
MehrEntwicklung 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
MehrEffizientes 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
MehrHochschule 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
MehrSchachtelung 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,
MehrPrä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.
MehrAbstrakte 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
MehrProgrammieren 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...
MehrEclipse 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
MehrAutor: 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
MehrEinfü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
MehrAdvanced 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
MehrDebugger. 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
MehrInformatik 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
Mehr16. 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
Mehr0. 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
MehrPraktikum 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
MehrPraktikum 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
Mehr8.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
MehrInhalt Ü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
MehrSystem 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
MehrJava-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
MehrEinfü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
MehrS. 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
Mehr7 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
MehrEinleitung 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
MehrAngewandte 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:
MehrEinfü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
MehrDebugging 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
MehrEmbedded 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
MehrAlgorithmische 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
MehrWie 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
MehrProgrammiertechnik. 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
MehrProgrammieren 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