(Embedded) Linux-Fehlersuche

(Embedded) Linux-Fehlersuche

3-Tage-Kurs

Der Kursinhalt kann auf Ihre Bedürfnisse und Ziele zugeschnitten werden, und wenn es die Zeit erlaubt, kann während der Schulung auch eine Beratung erfolgen. Bitte klicken Sie auf die öffentliche Registerkarte, um die öffentlichen Sitzungen zu sehen.

Privat online
Vor Ort in Ihrem Unternehmen
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Viertel wählen Quartal Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis
4. Quartal 2026 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Jan 01, 2027

Inhalt wie unten beschrieben. Ab drei Teilnehmern aus demselben Unternehmen, schauen Sie sich bitte unsere privaten Sitzungen an.

Öffentlich online
Öffentlicher Workshop im Klassenzimmer
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Datum auswählen Datum Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis

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

Kursfahrplan

Dieses Bild hat ein leeres alt-Attribut; sein Dateiname ist shedule2.jpg

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?
  • Booten des Zielsystems
    • Boot-Reihenfolge | SD-Karten-Partitionen

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
  • 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 von bugs | Strategie zur Fehlerbehebung | errno
  • Fehlersuche: Einfache Tools
    • lsof | ltrace | strace | netstat | procfs | gcc/binutils | Toolchain | ldd | statische libs/shared libs | strings | nm | objdump | readelf | addr2line
  • Verhinderung von Fehlern | Modellierung/Abstraktion | Prototypen | Schulung | Anforderungen/Architektur/Design | Firmware Standard
    • Kodierungsstandard | splint | cppcheck
Tag 2
  • Fehlersuche: Erweiterte Tools
    • gdb | Gastgeber gdb | Ziel gdb | gdb remote debugging | gdb remote debugging mit 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 mit git | Debug-Unterstützung vom Kernel | syslog
  • Fehlersuche durch Drucken
    • printk | klogd | Loglevels | rate limit | debug levels | Selektive Teilsysteme debuggen | dynamische Fehlersuche | Probleme mit⁣ printk | printk aus dem Benutzerraum
  • Fehlersuche durch Abfragen
    • debugfs
  • oops Fehlersuche
    • disassemble | 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 timers
    • gprof | gcov | uftrace
  • top und ähnliche Programme
    • top | htop | powertop | iotop | atop | crash

Kernel Profiling/Tracing

  • gcov | lcov | ftrace
    • nop 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 graphs
  • Kernel Probes: Kprobes | KretProbes
  • BPF: Einleitung | ply

Optimierungen/Benchmarks

  • bootgraph | bootchart
  • Phoronix Test Suite

Kursbroschüre (pdf)

Was die Kunden sagen

Reliable Embedded Systems
Überblick über den Datenschutz

Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.