(Embedded) Linux-Fehlersuche

(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 ö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
1. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Apr 01, 2024
2. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) 01. Juli 2024
3. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) 01. Oktober 2024
4. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Jan 01, 2025

Inhalt wie unten beschrieben. Ab drei Teilnehmern aus demselben Unternehmen besuchen Sie bitte unsere privaten Sitzungen.

Ö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
23. Juli 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 Jun 13, 2024
26. November 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 17. Oktober 2024

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

Kursbroschüre (pdf)

Was die Kunden sagen