(Embedded) Linux-Fehlersuche

3-Tage-Kurs

Der Kursinhalt kann auf Ihre Bedürfnisse und Ziele zugeschnitten werden. Wenn es die Zeit erlaubt, kann auch eine Beratung während des Kurses stattfinden. Bitte klicken Sie auf die Registerkarte "Öffentlich", um die öffentlichen Sitzungen zu sehen.

Privat online
ab 3 Teilnehmern
Vor Ort in Ihren Räumlichkeiten
ab 3 Teilnehmern
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Viertel wählen Quartal Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis
3. Quartal 2023 privat remote virtuell Englisch UTC+2 01. Oktober 2023
4. Quartal 2023 privat remote virtuell Englisch UTC+2 Jan 01, 2024
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Datum auswählen Datum Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis

Inhalt wie unten beschrieben.

Öffentlich online
ab 1 Teilnehmer
Öffentlicher Workshop im Klassenzimmer
ab 1 Teilnehmer
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 das Debugging, Profiling und Tracing im Linux-Benutzer-/Kernelbereich erläutert.

Ziele des Kurses

Wir zeigen verschiedene Ansätze, die zum Debuggen und Profiling von Software im Linux-Benutzer- und Kernelbereich verwendet werden können. Theorie und praktische Übungen vermitteln Ihnen die notwendige Erfahrung, um den richtigen Ansatz zu wählen, wenn Sie selbst Fehler finden und beheben müssen.

Beschreibung

In diesem dreitägigen Kurs werden die Konzepte von Linux-Debugging und -Profiling anhand praktischer Übungen in Kombination mit Anleitungen veranschaulicht. Es handelt sich um eine Sammlung von Debugging/Profiling-Kapiteln aus verschiedenen meiner Workshops plus einiger Ergänzungen. Die praktischen Übungen werden mit freier und quelloffener Software wie dem Yocto Project® SDK auf einem Target-Board (z.B. i.mx6) durchgeführt, das Sie auf Wunsch erwerben/versenden können. Dies ermöglicht es Ihnen, auch nach dem Workshop zu Hause mit dem Kursmaterial zu 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 Evaluierung von Embedded Linux-Systemen interessieren oder damit betraut sind und etwas tiefer einsteigen wollen, wie Manager, Projektleiter, Software-, Entwicklungs- und Systemingenieure, Außendienstmitarbeiter, 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? | gerätebaumcompiler | beispiele
    • Kernel
      • checkout | Konfig-kconfig | bauen-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 + Fehlersuche
  • 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

Was die Kunden sagen