(dynamische Speicheranalyse)

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Kapselung , toString , equals , Java API
Objektrelationales Mapping mit JPA
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
FOR Anweisung.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Einführung in Visual C++
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Bios.
So arbeitet ein PC.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
Dynamische Datentypen
Ein Vortrag von Simon Bayer
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Arduino Kurs Abend 2.
Μ Version 1.0Seite 1µVision Start Debugger Set Breakpoint µVision Debugger.
Programmieren in Assembler
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Arbeitsspeicher Eine Präsentation von - Namen wurden entfernt -
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
1 Konica Minolta IT Solutions Prinzip Partnerschaft MANAGED MONITORING ÜBERWACHJUNG DER SERVERINFRASTRUKTUR UND ANWENDUNGEN DIREKT AUS DER CLOUD.
SPEICHER ROM + RAM ROM RAM Arten von RAM (DDR-RAM, SDRAM) Beispiel
Analyse des HTML-Codes. Dieser Code ist für die Breite des Textes.
Mario´s kleines Hardwarelexikon Vom Arbeitsspeicher bis zur Soundkarte.
Remotedesktopverbindung für Windows 7 Mit der Remotedesktopverbindung können Sie leicht eine Verbindung zu einem Terminalserver oder einem anderen Computer.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
1 freedroidz – spielend Programmieren lernen. 2 Was ist freedroidz?
DTrace Mathias Velten Sun Campus Ambassador
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
Netzwerk - Programmierung
Blowfish mit CUDA Dominik Oepen Inhalt ● Blowfish Grundlagen ● Implementierungsdetails ● Performance ● Fazit.
PC Aufrüsten, Auftrag 1 Systemtools, Benchmark
Der einfache Weg zur fehlerfreien JCL
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Hello World! Javakurs 2013 Arne Kappen
Zwei Denkansätze zur Klasse Schlange
VHDL-Modellierung der Pipeline eines DLX-Prozessors
Mac OS, Mac OS X, macOS.
Willkommen bei PowerPoint
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Programmieren in C Module und Bibliotheken
Einführung in die Programmierung
Erkundung eines Berufs
SS 04 Christiane Rauh Christian Hellinger
Dynamic Link Libaries Von Tobias Pletschke
Einführung in die Programmierung
«Delegierter» Methoden Schablone Funktionszeiger
Produktname.
Schleifen Datenfelder (Arrays) Verzweigungen
Einführung in die Programmierung
Eine Präsentation von Heiko Gericke
 Präsentation transkript:

(dynamische Speicheranalyse) 2017/10/20 Mint Medical GmbH Einführung in Valgrind (dynamische Speicheranalyse) Lucas Beyer

Was ist valgrind? Sprich: „Wall“ + G + „Rind“ Name des (gut bewachten) Haupteingangs zu Valhalla Nordische Mythologie Irrelevant Framework für Tools zur dynamischen Analyse von Programmen Simuliert Prozessor, Cache, RAM Benötigt keine Änderung des Codes Mehr Info wenn mit Debuginfo kompiliert Linux/Darwin Verfügbare Tools: Memcheck: Erkennen von Fehlern im Speicherverhalten Cachegrind: Profiler, auch für Cachelines und CPU Branchingprediction Helgrind, DRD: Erkennen von Threadfehlern Deadlocks Race conditions Viele weitere Tools Weniger/seltener nützlich

Memcheck Unzulässige Speicherzugriffe Verwenden von uninitialisiertem Speicher Ungültige frees/deletes Memoryleaks Ungültige memcpy und ähnliche

Unzulässige Speicherzugriffe Lesen und schreiben Buffer over/underrun Bereits befreiter Speicher

Memcheck Unzulässige Speicherzugriffe Verwenden von uninitialisiertem Speicher Ungültige frees/deletes Memoryleaks Ungültige memcpy und ähnliche

Verwenden von uninit. Speicher Achtung! g++ -O2 -g valgrind Generiert WTF!? Valgrind funktionniert nicht!! Wo ist mein if? C++ undefined behaviour

Verwenden von uninit. Speicher Moral der Geschicht' Ignoriere Compilerwarnungen nicht! G++ mit -Wall test_uninit2.cpp: In function ‘int main()’: test_uninit2.cpp:5: warning: ‘i’ is used uninitialized in this function

Verwenden von uninit. Speicher Nur wenn direkt oder indirekt verwendet in Bedingung Ausgabe Alles andere erlaubt

Memcheck Unzulässige Speicherzugriffe Verwenden von uninitialisiertem Speicher Ungültige frees/deletes Memoryleaks Ungültige memcpy und ähnliche

Ungültige frees/deletes Double-frees Unalloced frees new/delete mismatch

Memcheck Unzulässige Speicherzugriffe Verwenden von uninitialisiertem Speicher Ungültige frees/deletes Memoryleaks Ungültige memcpy und ähnliche

Memoryleaks Es ist die Rede von memory Blöcken „Still reachable“ Es gibt noch einen gültigen Pointer auf den Anfang des blocks „Definitely lost“ Es gibt keinen gültigen Pointer mehr Typischer memory-leak „Indirectly lost“ Es gibt noch gültige Pointer Jedoch befinden sich diese auch nur in verlorenem Speicher Typischer Folgefehler z.B. Baumstruktur, wenn die Wurzel verloren ist „Possibly lost“ Es gibt noch gültige Pointer, aber nur mitten in den Block Zufall Fehler C++ new[] „magic cookie“

Memoryleaks „Still reachable“ und „Indirectly lost“ „Possibly lost“ nur angezeigt, wenn –show-reachable=yes Meist unwichtig „Possibly lost“ „Potential memory leak“-Kategorie in Cdash Nicht zu unterschätzen, wegen C++ new[]

Memoryleaks

Memcheck Unzulässige Speicherzugriffe Verwenden von uninitialisiertem Speicher Ungültige frees/deletes Memoryleaks Ungültige memcpy und ähnliche Input ptr und output ptr überlappen Auch bei strcpy und strcat Werden diese heutzutage überhaupt noch verwendet?

Bonusquiz 1 G++ option -Wnon-virtual-dtor ist einfacher quizz_leak.cpp:1: warning: ‘struct Base’ has virtual functions and accessible non-virtual destructor quizz_leak.cpp:10: warning: ‘struct Deriv’ has virtual functions and accessible non-virtual destructor

Bonusquiz 2