Profiling und Coverage mit GNU und Bare Embedded Systems

Ähnliche Dokumente
Dr. Nicholas Merriam Rapita Systems Ltd., IT Centre, York Science Park, Heslington, York, YO10 5DG (UK)

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

C++ mit Eclipse & GCC unter Windows

Was ist ein Profiler?

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

ATHOS Benutzertreffen

Version 0.3. Installation von MinGW und Eclipse CDT

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Stefan Draeger Gartenstr Schöningen. Velleman K8055 Experimentier Board C# Programmieranleitung

Installation von Microsoft Visual C Express

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Übung: Verwendung von Java-Threads

Installationshinweise für Serverbetrieb von Medio- Programmen

Hex Datei mit Atmel Studio 6 erstellen

SEMINAR Modifikation für die Nutzung des Community Builders

BMC Control M Tipps & Tricks 2. Martin Dienstl, BMC Software martin_dienstl@bmc.com

Anwendungsbeschreibung an einem Beispiel

12. Dokumente Speichern und Drucken

Excel Funktionen durch eigene Funktionen erweitern.

SID Social Media Report 2010/2011 Aktuelle Untersuchung zur Nutzung von Social Media im Beruf

Anleitung zum Prüfen von WebDAV

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Java-Tutorium WS 09/10

Schnellinbetriebnahme MPA-S mit Profibus an Siemens S7

Big Data Projekte richtig managen!

XING und LinkedIn-Integration in das erecruiter-bewerberportal

PV-S1600 Betriebssystem-Aktualisierungsvorgang. Sie müssen die beiden folgenden Schritte ausführen,

Internet Explorer Version 6

Reparaturmodus unter Office und 2013 finden

Artikel Schnittstelle über CSV

25 Import der Beispiele

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

Software-Engineering Grundlagen des Software-Engineering

Version Lohnbuchhaltung

:: Anleitung Hosting Server 1cloud.ch ::

DLLs (dynamic loaded libraries) mit MingW erstellen

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

JCoverage. Uni Kassel Projektarbeit Software Engineering Markus Pilsl & Marko Medved

4D Server v12 64-bit Version BETA VERSION

Lokale Installation von DotNetNuke 4 ohne IIS

Konfigurationsmanagement und Evolution: Änderungsverwaltung und Repository-Analyse. Dr. Thorsten Arendt Marburg, 12. November 2015

SOLID EDGE INSTALLATION STANDARD PARTS am Client. INSTALLATION Standard Parts am Client

Überblick: Programmierung der USB-Boards. Erstmalige Inbetriebnahme. Programmiervorgang:

Verwendung des Terminalservers der MUG

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Konfigurationsmanagement und Evolution: Änderungsverwaltung und Repository-Analyse. Dr. Thorsten Arendt Marburg, 13. November 2014

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Support-Tipp Mai Release Management in Altium Designer

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

Testwell CTC++ Test Coverage Analyser Testabdeckung für alle Coverage-Stufen, alle Compiler, alle Embedded Targets

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1-

Verwendung von SD-Speicherkarten über den SPI-Bus

Leitfaden zur Nutzung von binder CryptShare

TeamSpeak3 Einrichten

Leitfaden zur Installation von Bitbyters.WinShutdown

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Windows Explorer Das unbekannte Tool. Compi-Treff vom 19. September 2014 Thomas Sigg

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Zählen von Objekten einer bestimmten Klasse

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Mac OS X: Sicherung und Wiederherstellung der Daten mittels Disk Utility

Inbetriebnahme grabbmodul-1 / minimodul-16x bzw. smarteye-1

Samsung Large Format Display

Der Kalender im ipad

shopwin Kurzanleitung Kontenauswertung - Kassenbuch

Im Folgenden wird die Konfiguration der DIME Tools erläutert. Dazu zählen die Dienste TFTP Server, Time Server, Syslog Daemon und BootP Server.

Visual Basic Express Kompilieren mit Skripten

Wasserzeichen mit Paint-Shop-Pro 9 (geht auch mit den anderen Versionen. Allerdings könnten die Bezeichnungen und Ansichten etwas anders sein)

Revox Joy S232 App D 1.0

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Web-Modul in Lightroom 5. Stefan Sporrer

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Installation und Konfiguration von X-Server Xming auf Windows XP

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

Anleitung - Mass er by Patrick Biegel

VIDA-LOGDATEIEN VIDA ALL-IN-ONE

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

STRG + A = STRG + C = STRG + X = STRG + V = STRG + Alt + Entf = STRG + S =

git Änderungen verwalten mit git

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Benutzerhandbuch bintec R4100 / R4300 Configuration Management. Copyright 17. Juli 2006 Funkwerk Enterprise Communications GmbH Version 1.

HISPRO ein Service-Angebot von HIS

Installation censhare Client. Inhaltsverzeichnis

Workshop: Eigenes Image ohne VMware-Programme erstellen

Kurzeinstieg in VR-Ident personal

Das Handbuch zu KAppTemplate. Anne-Marie Mahfouf Übersetzung: Burkhard Lück

Transkript:

Profiling und Coverage mit GNU und Bare Embedded Systems Life is too short for bad tools! Prof. Erich Styger erich.styger@hslu.ch +41 41 349 33 01

Coverage und Profiling Coverage: Analyse der Testabdeckung von Software. Das Ziel ist eine Steigerung der Qualität. Profiling: Analyse des Laufzeitverhaltens von Software. Das Ziel ist eine Leistungsoptimierung des Systems. # 2 "Kann man dafür nicht die GNU Tools benutzen, die man für Embedded Linux kennt?"

GNU ist GNU ist nicht gleich GNU? - Analyse braucht Ressourcen - RAM, FLASH, File System, - Embedded: GNU for ARM Embedded (launchpad) - GNU Tools: gcov (Coverage) und gprof (Profiling) Tools - Verwendung auch für Embedded?!???? Embedded Linux Embedded 'Bare Metal' # 3

Coverage mit GNU gcov Prof. Erich Styger erich.styger@hslu.ch +41 41 349 33 01

Coverage - Information über - Welche Zeilen - Wie oft ausgeführt - Report Generierung - Essenziell für Testabdeckung # 5

gcov: Coverage mit GNU Tools - Instrumentierung mit gcc - Generierung von.gcno (GNU Coverage Node) auf Host - Ausführung der Anwendung auf Host - Generierung von.gcda (Gnu Coverage) Daten - Report Generierung auf Host mittels gcov Host/Embedded Linux App GNU GCC GNU GCOV gcc *.gcno gcov reports Lib App Lib Debug Interface *.gcda # 6

Gcov für Bare Embedded - Benötige Coverage Library (File I/O) - Constructor Inits, File I/O, gcov_exit() - Semi Hosting: Transfer der Daten auf Host Host App GNU GCC GNU GCOV gcc *.gcno gcov reports I/O Lib *.elf Debug Interface App I/O Lib Debug Interface *.gcda # 7 Embedded Board Semihosting

Gcov: Arcs, Edges, Branches - Instrumenetierung an 'strategischen Stellen' (Arcs) - Gcov: 'Condition coverage', NICHT 'Decision Coverage' - L x : 64bit Zähler (RAM) k = 0; if (i==10) { i += j; j++; } else { foo(); } bar();

Instrumentation Compiler Option - Compiler Optionen -fprofile-arcs -ftest-coverage - gcc erstellt*.gcno Dateien - Kann einzelne Dateien instrumentieren # 9

Instrumentation: Linker Optionen - Linker Optionen -specs=rdimon.specs: semihosting (file/console I/O) -fprofile-arcs: Use profiling/instrumentation # 10

Schreiben der Coverage.gcda Datei - Anwendung ruft _exit(0) auf - Coverage Daten werden an Files angehängt (Multiple Runs) Application _exit(0); gcov_exit(); Write files # 11

Analyse der Daten mit gcov in Eclipse - Doppel-Klick Coverage Datei - Benötigt.elf Datei (Symbol/Debug Information)

gcov Eclipse Ansicht - Coverage Status Information - Zusammenfassung, Module, Funktionen - Doppel-Klick auf File/Funktion - Öffnet Quelltext Ansicht - Report Generierung

Coverage Information in Quelltext - Grün - ausgeführt - Rot - nicht ausgeführt - Information, wie oft ausgeführt

Zusammenfassung: Coverage - GNU Coverage (gcov) für Embedded - Instrumentierung durch gcc/compiler - Tools auf Host: Eclipse, gcov - Herausforderungen für Bare Embedded - Library Implementierung (File I/O, Schreiben der Dateien) - Daten auf Host transferieren (z.b. mit Semihosting) - RAM Verbrauch (8 Bytes pro Zähler) - Ändert geringfügig Laufzeitverhalten!

Profiling mit GNU gprof Prof. Erich Styger erich.styger@hslu.ch +41 41 349 33 01

Profiling - Abschätzung über Laufzeitverhalten - Was wurde wie oft, wie lange ausgeführt - Wo verbringt das Programm seine Laufzeit # 17

gprof für Bare Embedded - Benötige Profiling Library (File I/O) - PC Sampling, Counting, File I/O - Semi Hosting: Transfer der Daten auf Host Host App GCC GPROF gcc gprof reports I/O Lib *.elf Debug Interface App I/O Lib Debug Interface gmon.out # 18 Embedded Board Semihosting

Rechenzeit der Funktion - Differenz der Zeit zwischen Anfang und Ende? - Problematisch bei RTOS/Time-slicing/Interrupts -gprof: Statistisches Sampling - Unterstützung durch RTOS/Interrupts - Erstellung eines Histogramms (min, max, step) void bar(void) { } bar_ t0 bar_ t1 void each10ms(void) { SamplePC(); } Histogram Min Addr Max Addr # 19

mcount(): Zählen der Aufrufe - Compiler: Instrumentierung mit _mcount() Aufruf -_mcount() berechnet Arc - src (caller) und dst (callee) - Neuer Eintrag in (Hash)Tabelle, Erhöhung Zähler void bar(void) { } void foo(void) { bar(); } gnu_mcount_nc: {save regs} bl _mcount_internal {restore regs} Arc Table Src Dst Nof 0x1200 0x1500 5 0x240A 0x2448 1 # 20

_exit() _mcleanup() gmon.out -_exit(): Generierung von Daten File - gmon.out: spezielle Datei für gprof - Header, Versions Information, Profile Frequenz - Daten über Funktionsaufrufe und Anzahl (Arcs) - Daten über Profile Sampling void main(void) { _exit(0); } void _exit(int) { _mcleanup(); } void _mcleanup(void) { } gmon.out # 21

Analyse von gmon.out mit gprof (Eclipse) # 22

RAM Anforderungen (Arcs und Histogramm) - Text/Code (lowpc, highpc) - Arcs - hasfraction: Grösse Call Instruktion - arcdensity: Wie viele Aufrufe - Histogram - histfraction: PC Sampling Auflösung, Grösse Funktionen text froms[] 16 Entries: text hashfraction tos[] 96 32: selfpc 32: count 16: link 16: pad Entries: text* arcdensity 100 kcount[] 16 Entries: textsize histfraction 8192 8192/2*2=4096 8192*2%*12=1956 8192/2=4096 10148 # 23

Profiling: Zusammenfassung - GNU Profiling (gprof) für Embedded - Instrumentierung durch gcc/compiler - PC Sampling, Zählung Funktions-Aufrufe - Herausforderungen für Bare Embedded - Library Implementierung (File I/O, Schreiben der Dateien) - Daten auf Host transferieren (z.b. mit Semihosting) - RAM Verbrauch - Ändert geringfügig Laufzeitverhalten! # 24

Literatur/Links - https://gcc.gnu.org/onlinedocs/gcc/gcov.html - https://sourceware.org/binutils/docs/gprof - https://docs.freebsd.org/44doc/psd/18.gprof/paper.pdf - Blog McuOnEclipse - http://mcuoneclipse.com/2014/12/26/code-coveragefor-embedded-target-with-eclipse-gcc-and-gcov/ - http://mcuoneclipse.com/2015/05/31/code-coveragewith-gcov-launchpad-tools-and-eclipse-kinetis-designstudio-v3-0-0/ Vielen Dank für die Aufmerksamkeit! # 25