Effizientes Memory Debugging in C/C++
|
|
- Karin Voss
- vor 8 Jahren
- Abrufe
Transkript
1 Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014
2 Ursachen/ Symptome Debugging Tools
3 Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten Fall? Aber mein Code funktioniert doch
4 1. Memory Leaks Allozierter Speicher, der nicht wieder freigegeben wird Nicht-virtueller Destruktor Freigabe durch Exception Handling übersprungen Symptome: Systemspeicher läuft voll
5 1. Memory Leaks Allozierter Speicher, der nicht wieder freigegeben wird Nicht-virtueller Destruktor Freigabe durch Exception Handling übersprungen Symptome: Systemspeicher läuft voll void MemoryLeak() { int* array = new int[4]; if (condition) { throw Exception(); } delete[] array; }
6 2. Falsche Speicheroperationen Unpassendes free/delete/delete[] Unpassendes free/delete/delete[] nach malloc/new/new[] delete von lokalen/globalen Objekten Mehrfaches delete Gefahren: Programmabbruch Destruktor wird nicht ausgeführt Je nach Implementierung können die Heap Datenstrukturen inkonsistent werden
7 2. Falsche Speicheroperationen Unpassendes free/delete/delete[] Unpassendes free/delete/delete[] nach malloc/new/new[] delete von lokalen/globalen Objekten Mehrfaches delete Gefahren: Programmabbruch void WrongDelete() { int* array = new int[4]; delete array; delete array; } Destruktor wird nicht ausgeführt Je nach Implementierung können die Heap Datenstrukturen inkonsistent werden
8 3. Nicht initialisierte Variable Variable, die vor der Verwendung nicht initialisiert wurden Allokation auf Heap oder Stack Ignorieren von Compilerwarnung Symptome: Verhalten abhängig von Compileroptimierungen Zufällige Initialisierung Kann bei jedem Funktionsaufruf verschieden sein
9 3. Nicht initialisierte Variable Variable, die vor der Verwendung nicht initialisiert wurden Allokation auf Heap oder Stack Ignorieren von Compilerwarnung Symptome: Verhalten abhängig von Compileroptimierungen Zufällige Initialisierung void UninitializedLocal() { int array[4]; if (array[2] > 0) { } else { } } Kann bei jedem Funktionsaufruf verschieden sein
10 4. Ungültige Referenzen Zeiger auf Speicherorte, die eigentlich nicht mehr gültig sind Freigegebener Speicher Lokale Variable ausserhalb des Scope (z.b. nach return) Gefahren: Andere Werte können überschrieben werden Wert kann sich zu jedem Zeitpunkt ändern Abhängig von Compileroptimierungen
11 4. Ungültige Referenzen Zeiger auf Speicherorte, die eigentlich nicht mehr gültig sind Freigegebener Speicher Lokale Variable ausserhalb des Scope (z.b. nach return) Gefahren: void OutsideOfScope() { int* array; if (array[2] > 0) { int scoped_array[4]; array = &scoped_array; } int x,y; Andere Werte können überschrieben werden array[1] = 1; Wert kann sich } zu jedem Zeitpunkt ändern Abhängig von Compileroptimierungen
12 5. Index-Überlauf (OOB) Zugriff auf Elemente ausserhalb eines allozierten Speicherbereichs Off-by-one Fehler Fehlende Terminierung von Strings (z.b. nach strncpy) Gefahren: Lokale oder globale Variable können überschrieben werden Heap Datenstrukturen können überschrieben werden Potentielle Sicherheitslücken!
13 5. Index-Überlauf (OOB) Zugriff auf Elemente ausserhalb eines allozierten Speicherbereichs Off-by-one Fehler Fehlende Terminierung von Strings (z.b. nach strncpy) Gefahren: void ArrayLocalOOB() { int array[4]; int scalar = 3; Lokale oder globale Variable können überschrieben werden } Heap Datenstrukturen können überschrieben werden Potentielle Sicherheitslücken! for(int i=1; i <= 4; ++i) { array[i] = 0; }
14 6. Strict Aliasing Zwei Pointer verschiedenen Typs dürfen nicht auf dasselbe Objekt zeigen Seit C89/90 bzw C++98 Teil des Standards Erlaubt viele Compileroptimierungen Compiler darf Operationen umsortieren Compiler darf annehmen, dass sich Werte von Variablen nicht ändern Gefahren: Unerwartete Ergebnisse
15 6. Strict Aliasing Zwei Pointer verschiedenen Typs dürfen nicht auf dasselbe Objekt zeigen Seit C89/90 bzw C++98 Teil des Standards Erlaubt viele Compileroptimierungen Compiler darf Operationen umsortieren Compiler value darf annehmen, = 1; dass sich Werte von Variablen nicht ändern Gefahren: void StrictAliasing() { int value; set_values(value, reinterpret_cast<short*>(&value)); } static void set_values( int& value, short* value2) { } *value2 = 2; value = value - *value2; Unerwartete Ergebnisse
16 7. Data Race Unsynchronisierte Speicherzugriffe zwischen mehreren Threads Fehlende Synchronisierung durch Mutexe, Semaphoren & co Nicht-atomare Operationen Gefahren: Unerwartete Ergebnisse Fehlende Synchronisierung
17 7. Data Race Unsynchronisierte Speicherzugriffe zwischen mehreren Threads Fehlende Synchronisierung durch Mutexe, Semaphoren & co Nicht-atomare Operationen Gefahren: static volatile int value; void* thread_proc(void* param) { for(int i=0; i< ; ++i) { value += 1; } return 0; } Unerwartete Ergebnisse Fehlende Synchronisierung
18 Debugging Tools Welche Fehler kann/muss man statisch detektieren? Wie kann man fehlerhafte Speicherzugriffe automatisch detektieren? Was kann ich tun um Fehler zu vermeiden?
19 With a little help from my compiler Memory Leaks Nicht initialisierte Variable Statische Analyse und Laufzeittests Voraussetzungen: -Wall -O1 (besser -O2) -Wstrict-aliasing=2 -fstack-protector-all Ungültige Referenzen Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
20 Statische Analysen Clang Static Analyzer CppCheck Oink Cqual++ Splint cccc Klocwork Insight Gimpel Coverity PC-Lint PVS-Studio... Memory Leaks Nicht initialisierte Variable Ungültige Referenzen Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
21 GDB Memory Leaks Watchpoints (gdb) print &(x->a) (gdb) watch *$1 (gdb) continue Conditional Breakpoints (gdb) break main.cpp:20 (gdb) cond 1 (i == 3) Nicht initialisierte Variable Ungültige Referenzen Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
22 valgrind Memory Leaks Framework zur automatischen dynamischen Analyse von Programmen Unterstützt viele Architekturen Nur Linux (und Mac OSX) Nicht initialisierte Variable Ungültige Referenzen Memcheck SGCheck Helgrind Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
23 Dr. Memory Memory Leaks Nicht initialisierte Variable Ungültige Referenzen Windows und Linux Nur Intel x86 (32bit) Features und Performance ähnlich zu memcheck Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
24 Address/Thread Sanitizer GCC >= 3.8, clang >= 3.2 Memory Leaks Nicht initialisierte Variable Address Sanitizer: -fsanitize=address Thread Sanitizer: -fsanitize=thread Findet Data races und new/delete races Ungültige Referenzen Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
25 Vermeiden ist billiger als Fehlersuche Vermeiden von Pointern/new/delete std::shared_ptr, std::unique_ptr std::vector, std::string, std::array in-class initialization of non-static members class C { int a = 1; }; Synchronisation und atomare Operationen std::atomic std::lock_guard, std::call_once, std::future Memory Leaks Nicht initialisierte Variable Ungültige Referenzen Falsche Speicheroperationen Index-Überlauf Strict Aliasing Data Race
26 Ursachen/ Symptome Debugging Tools
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrJava Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrProzeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen
Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrC A R L V O N O S S I E T Z K Y. Boost C++ Libraries. Johannes Diemke. Department of Computer Science Learning and Cognitive Systems
C A R L V O N O S S I E T Z K Y Boost C++ Libraries Johannes Diemke Department of Computer Science Learning and Cognitive Systems Grundlagen Freie von Experten begutachtete, portable C++ Bibliothek Nützlich,
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen
Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere
MehrÜbungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrValgrind. Speicherleaks und Bugs finden. Frederik Heber. Seminarreihe Technische Numerik. Institut für Numerische Simulation, Universität Bonn
Speicherleaks und Bugs finden Institut für Numerische Simulation, Universität Bonn findet Seminarreihe Technische Numerik findet findet C/C++ bieten keinen Garbage Collector. Vorteile Mehr Freiheiten.
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrArrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrOperationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrProzesse. Stefan Janssen. sjanssen@cebitec.uni-bielefeld.de. Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de
Netzwerk - Programmierung Prozesse Stefan Janssen sjanssen@cebitec.uni-bielefeld.de Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Madis Rumming mrumming@cebitec.uni-bielefeld.de Übersicht Prozesse
MehrName: Klausur Programmierkonzepte SS 2011
Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrFelder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrC++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrMulti-Threading. Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de
Multi-Threading Ralf Abramowitsch Vector Informatik GmbH abramowitsch@lehre.dhbw-stuttgart.de Einführung in Threads Threads synchronisieren ThreadPools Thread = unabhängiger Ausführungspfad, der gleichzeitig
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrSysteme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrWirtschaftsinformatik I
Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation
MehrInfo-Veranstaltung zur Erstellung von Zertifikaten
Info-Veranstaltung zur Erstellung von Zertifikaten Prof. Dr. Till Tantau Studiengangsleiter MINT Universität zu Lübeck 29. Juni 2011 Gliederung Zertifikate Wer, Wann, Was Ablauf der Zertifikaterstellung
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrWorkshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ
IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler
MehrUniversität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures
SQLJ Basics Universität Stuttgart Abteilung Anwendersoftware 01.07.2002 Was ist SQLJ? SQLJ Part 0: - Steht für Embedded SQL in Java SQLJ Part 1: - Java-Methoden als SQL Stored-Procedures SQLJ Part 2: -
Mehr.NET Code schützen. Projekt.NET. Version 1.0
.NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll
MehrEinführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
MehrAlltagsnotizen eines Softwareentwicklers
Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
MehrDie Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrZugriff auf die Modul-EEPROMs
MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem
MehrSynchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
MehrWindows Server 2008 für die RADIUS-Authentisierung einrichten
Windows Server 2008 für die RADIUS-Authentisierung einrichten Version 0.2 Die aktuellste Version dieser Installationsanleitung ist verfügbar unter: http://www.revosec.ch/files/windows-radius.pdf Einleitung
MehrOO Softwareentwicklung
OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrHochschule Darmstadt Fachbereich Informatik
Hochschule Darmstadt Fachbereich Informatik Entwicklung webbasierter Anwendungen 1 Hochschule Darmstadt Fachbereich Informatik PHP 7 2 Releasekalender http://php.net/supported-versions.php 3 Historie Urpsrünglicher
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrGraphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
MehrProgrammieren für Ingenieure Sommer 2015. Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.
Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Ein Rechner Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Rechner sind überall Ihr Rechner
MehrObjektorientierte Programmierung mit C++ Vector und List
Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu
Mehr0. Einführung. C und C++ (CPP)
C und C++ (CPP) 0. Einführung Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte Wissenschaften marc.rennhard@zhaw.ch Marc Rennhard, 05.01.2010,
MehrC/C++-Programmierung
1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
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
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
MehrDebugging und Speicherfehler. Seminar Effiziente Programmierung Kadir Duman
Debugging und Speicherfehler Seminar Effiziente Programmierung Kadir Duman 01.12.2016 Inhalt Debugging Allgemein Was ist ein Bug? Was ist Debugging? Speicherfehler Allgemein Unterschiedliche Typen von
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
MehrAnwenderleitfaden Citrix. Stand Februar 2008
Anwenderleitfaden Citrix Stand Februar 2008 Inhalt 1. Ansprechpartner...3 2. Einführung...4 3. Citrix-Standard-Anwendungen...5 4. Sperrung der Citrix-Session durch falsche Anmeldung...5 5. Unterbrechung
MehrGliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
MehrArrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
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.
MehrReporting Services und SharePoint 2010 Teil 1
Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrAUTOMATISCHE E-MAIL-ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!
AUTOMATISCHE E-MAIL-ARCHIVIERUNG 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD! INHALT AUTOMATISCHE E-MAIL-ARCHIVIERUNG... 4 Eingehende E-Mails können
Mehr8 Zugriffstypen ( Zeiger )
8 Zugriffstypen ( Zeiger ) 1. Zugriffstypen, die auf Daten in einem Storage Pool zeigen Heap. 2. Allgemeine Zugriffstypen, die auf (mehr oder weniger) beliebige Daten zeigen. 3. Zugriffsparameter für Unterprogramme
MehrVerwendung des IDS Backup Systems unter Windows 2000
Verwendung des IDS Backup Systems unter Windows 2000 1. Download der Software Netbackup2000 Unter der Adresse http://www.ids-mannheim.de/zdv/lokal/dienste/backup finden Sie die Software Netbackup2000.
MehrSwisscom TV Medien Assistent
Swisscom TV Medien Assistent Mithilfe dieses Assistenten können Sie Fotos und Musik, die Sie auf Ihrem Computer freigegeben haben, auf Swisscom TV geniessen. Diese Bedienungsanleitung richtet sich an die
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa Peter Zeller AG Softech FB Informatik TU Kaiserslautern Speichermanagement Wie viel Speicher braucht ein Programm? Wofür wird Speicher benötigt? Wie ist der Speicher
MehrDomänenmodell: Fadenkommunikation und -synchronisation
Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4
MehrDOKUMENTATION VOGELZUCHT 2015 PLUS
DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
Mehr