In diesem Kurs werden Werkzeuge und Methoden für die Fehlersuche, Profilerstellung und Ablaufverfolgung im Benutzer- und Kernelbereich von Linux erläutert.
Ziele des Kurses
Wir stellen verschiedene Ansätze vor, die zum Debuggen und Profiling von Software im Benutzer- und Kernelbereich unter Linux eingesetzt werden können. Durch Theorie und praktische Übungen erwerben Sie die nötigen Kenntnisse, um den richtigen Ansatz zu wählen, wenn Sie Fehler selbstständig aufspüren und beheben müssen.
Beschreibung
Dieser dreitägige Kurs vermittelt anhand von praktischen Übungen und theoretischen Erläuterungen die Grundlagen der Fehlerbehebung und Profilierung unter Linux. Es handelt sich um eine Zusammenstellung von Kapiteln zum Debugging und Profiling aus verschiedenen meiner Workshops sowie einigen Ergänzungen. Die praktischen Übungen werden mit freier und quelloffener Software wie dem Yocto Project® SDK auf einem Zielboard (z. B. i.mx8) durchgeführt, das auf Anfrage erworben und an Sie versandt werden kann. So können Sie auch nach dem Workshop zu Hause mit den Kursunterlagen arbeiten.
Voraussetzungen
- Grundlegende Vertrautheit mit der Verwendung eines Linux-Systems (z. B. Ubuntu) als Endbenutzer im Benutzerbereich
- Grundlegende Vertrautheit mit einer Befehlszeilen-Shell
- Grundkenntnisse in der Programmierung von Benutzer- und Kernelbereich unter Linux
- Fortgeschrittene C-Programmierkenntnisse
- Idealerweise verfügen Sie über grundlegende Erfahrungen mit Embedded Linux (Kernel, Userspace, Root-Dateisystem, Tools), um diesen Kurs zu besuchen. Sie sollten "Embedded Linux - From System Architecture to Real-Time (5 Tage)" oder "Introduction to Embedded Linux in Theory and Practice - a Crash Course (3 Tage)" besucht haben. (sehr empfehlenswert)
- Es ist hilfreich, den Kernel-bezogenen Dingen zu folgen, wenn Sie "Embedded Linux Kernel Internals and Device Drivers (5 days)" besucht haben.
- Die oben genannten Veranstaltungen können sowohl vor Ort als auch online durchgeführt werden. Fragen Sie hier nach Terminen und Preisen.
Kursfahrplan

Wer sollte teilnehmen?
Personen, die sich für die Entwicklung, Fehlerbehebung oder Bewertung von Embedded-Linux-Systemen interessieren oder damit betraut sind und sich etwas eingehender mit diesem Thema befassen möchten, wie beispielsweise Führungskräfte, Projektleiter, Software-, Entwicklungs- und Systemingenieure, Außendiensttechniker, Ingenieure…
Gliederung des Kurses
Tag 1
Einführung
- Übersicht
|Geschichte|Versionierung des Linux-Kernels|Freigabe-Zyklus|Mainline|Werkzeuge|Besonderheiten des Kernels|Lizenzvergabe|FLOSS|Normen|Arbeiten mit freier Software|Spelunking|Unix-Philosophie
Beurteilungsausschuss
- Booten
- Wie bootet Linux auf einem PC?
|Was ist der Unterschied zu einem eingebetteten System?
- Wie bootet Linux auf einem PC?
- Booten des Zielsystems
- Boot-Reihenfolge
|SD-Karten-Partitionen
- Boot-Reihenfolge
Was wird benötigt für... (teilweise fakultativer Inhalt)
- Gastgeber
- Toolkit
- Das Yocto Project® | Installieren Sie das Yocto Project® SDK
- Vorbereitung der SD-Karte | Terminal-Emulation
screen|byobu|minicom
- Server
tftp| NFS
- Root-Dateisysteme
- Toolkit
- Zielsystem
git|u-boot- Skripting | fancy stuff | checkout | config | build | install | variables and commands
- Flacher Gerätebaum (fdt)
- Was ist ein FDT? | Device-Tree-Compiler | Beispiele
- Kernel
checkout| config-kconfig| build-kbuild
- Flacher Gerätebaum (fdt)
- bauen | installieren
- Kernel-Module
- bauen | installieren
Debugging im Userspace
- Was ist ein
bug?|Arten vonbugs|Strategie zur Fehlerbehebung|errno - Fehlersuche: Einfache Tools
lsof|ltrace|strace|netstat|procfs|gcc/binutils|Toolchain|ldd|statische libs/sharedlibs|strings|nm|objdump|readelf|addr2line
- Verhinderung von Fehlern
|Modellierung/Abstraktion|Prototypen|Schulung|Anforderungen/Architektur/Design|Firmware Standard- Kodierungsstandard
| splint | cppcheck
- Kodierungsstandard
Tag 2
- Fehlersuche: Erweiterte Tools
gdb|Gastgebergdb|Zielgdb|gdbremote debugging|gdbremote debuggingmit GUI- Speicher: Systemweit
| meminfo | free | vmstat | nmon - Speicherüberlauf: Was ist Mem Munch?
- Speicher: Pro Prozess
| ps | smem | procrank | top | htop | atop | memstat - Speicherzuweisung: Sonstige
| dmalloc |stack smash - Valgrind: Array
|uninitialisierter Speicher|Speicherleck|core| cachegrind | helgrind
Kernel-Debugging
- Fehler
|Fehlersuche|Fehlersuche im Kernel|binäre Suche mitgit|Debug-Unterstützung vom Kernel|syslog - Fehlersuche durch Drucken
printk|klogd|Loglevels|rate limit|debug levels|Selektive Teilsysteme debuggen|dynamische Fehlersuche|Probleme mitprintk|printkaus dem Benutzerraum
- Fehlersuche durch Abfragen
debugfs
oopsFehlersuchedisassemble|gdb|oops|weitere Lektüre
kgdb/kdb|Konsole + Debug- Magischer SysRq-Schlüssel
Tag 3
JTAG (optional)
- BDI-Einrichtung
|U-Boot: Fehlersuche vor Speicherverlagerung|Linux-Kernel-Modul-Fehlerbehebung|Andere Möglichkeiten?
Benutzerraum Profiling/Tracing
- Profiling/Tracing-Werkzeuge
syslog | ptrace | strace | ltrace |system timersgprof | gcov | uftrace
topund ähnliche Programmetop | htop | powertop | iotop | atop | crash
Kernel Profiling/Tracing
gcov | lcov | ftracenop tracer|function tracer|sched_switch tracer(viewer)|function_graph tracer|dynamischer Tracer|trace-cmd/kernelshark|trace_printk()|Weitere Lektüre
perf:perf top | hackbench |flame graphsKernel Probes:Kprobes | KretProbes- BPF: Einleitung
| ply
Optimierungen/Benchmarks
bootgraph | bootchart- Phoronix Test Suite
Kursbroschüre (pdf)
- "(Embedded) Linux-Debugging (3 Tage)"
Verwandte Kurse
- "Embedded Linux - Von der Systemarchitektur bis zur Echtzeit (5 Tage)"
- "Auffrischung zu Embedded Linux & Einführung in das Yocto Projekt (5 Tage)"
- "Embedded Linux Kernel Interna und Gerätetreiber (5 Tage)"
- "Das Yocto-Projekt - Ein gründlicher Überblick (4 Tage)"
- "Einführung in Embedded Linux & Real-Time, Vogelperspektive des Yocto-Projekts (4 Tage)"
- "Einführung in Embedded Linux in Theorie und Praxis - ein Crashkurs (3 Tage)"
- "FreeRTOS in Theorie und Praxis (3 Tage)"