Kernel-tracer_new

Kithara »Kernel Tracer«

Multi-Source Echtzeit-Message-Tracer/-Logger

Mit dem »Kernel Tracer« können Sie die internen Abläufe in Echtzeitanwendungen detailliert untersuchen.

Während der Programmentwicklung benötigt man leistungsfähige Werkzeuge, z.B. zur Fehlersuche. Hierzu findet bisher meist ein Debugger Verwendung. Bei Multithread-Programmierung ist jedoch ein Debugger oftmals nur eingeschränkt benutzbar, da er den Ablauf beeinflusst.

Bei nebenläufigen Prozessen, mehreren Threads und vor allem bei Computern mit mehreren gleichzeitig arbeitenden CPUs (Multiprozessor-Systeme, Hyperthreading und Dual-Core/Multi-Core) hängt das Ergebnis des Programmablaufs oftmals davon ab, ob die einzelnen Programmteile zeitlich parallel ausgeführt werden. Dies kann ein Debugger nicht sicherstellen.

Wer hat das nicht schon erlebt:

  • Der gesamte Programmablauf kommt bei Verwendung eines Debuggers durcheinander.
  • Ein Programm verhält sich nicht wie erwartet, bei Einsatz des Debuggers funktioniert jedoch alles.
  • Der Debugger ist nicht in der Lage, im Echtzeitkontext zu arbeiten.

Die Lösung ist ein Tracer-Werkzeug, mit dem der tatsächliche Ablauf der parallelen Programmteile protokolliert und anschließend ausgewertet werden kann.

Kurzbeschreibung

Der »Kernel Tracer« ist ein Multi-Source Echtzeit-Message-Logger. Er dient der Fehlersuche, der Qualitätskontrolle und allgemein zum Aufspüren von Zusammenhängen, die ansonsten kaum zu ermitteln sind.

Der »Kernel Tracer« sammelt garantiert alle Trace-Messages, die systemweit von verschiedenen Quellen stammen können, in der Reihenfolge ihres Auftretens ein. Messages verschiedener Quellen erscheinen normalerweise auf verschiedenen Seiten (Tabs), können jedoch verschmolzen werden (merged). Er ist in der Lage, mehrere Hunderttausend Messages pro Sekunde zu verarbeiten. Um in der schieren Datenmenge die entscheidenden Information zu finden, stellt der »Kernel Tracer« verschiedene Mechanismen bereit, um Messages zu filtern oder zu suchen.

Der »Kernel Tracer« erlaubt unglaubliche Einsichten in die tatsächlichen Abläufe im Inneren eines PCs, z.B. auf der Kernel-Ebene. Neben der Darstellung sämtlicher Aufrufe von Kithara-Funktionen mit all ihren aktuellen Funktionsargumenten können Sie auch selbst Messages erzeugen, die dann im »Kernel Tracer« mit vielen hilfreichen Zusatzinformationen dargestellt werden.

Die Eigenschaften des »Kernel Tracers« im Einzelnen:

  • Multi-Source: Unterstützung beliebig vieler Threads und Programme aus Anwendungs- und Kernel-Ebene (Echtzeit)
  • Multi-Core: Zeitlich korrekte Zuordnung der Messages bei mehreren CPUs (SMP, HyperThread, Dual-Core etc.)
  • hohe Verarbeitungsgeschwindigkeit (mehrere Hunderttausend Messages/s möglich, sofern Leistungsreserve vorhanden)
  • alle Funktionsaufrufe der »RealTime Suite« werden mit Funktionsargumenten dargestellt
  • Anwenderspezifische Messages können von den Tools der »RealTime Suite« generiert werden (printf-ähnlich mit C/C++)
  • Messages werden mit vielen Details dargestellt: inklusive der Systemzeit in 0,1-Mikrosekunden-Auflösung
  • Messages lassen sich filtern, zusammenführen, speichern und wieder laden
  • Filterung erlaubt: dauerhaftes Löschen, vorübergehendes Ausblenden, Fett-, Kursiv- und farbige Darstellung von Messages
  • Farbige Darstellung erlaubt Hervorhebung von Fehlermeldungen und Warnungen
  • Filterung der Messages nur von einer Quelle oder global
  • Weitere Kontextdetails: logische CPU, Thread-/Prozess-ID, Echtzeit-Task-ID, laufende Message-Nummer und -typ, Thread- oder Task-Priorität, Inhalt von Datenblöcken (bei ausgewählten Messages)
  • Suchfunktion für Messages nach Text, Zeitpunkt und allen anderen Feldern
  • Message-Masken verhindern unnötige Generierung nicht benötigter Messages
  • Messages werden auch über BSOD hinweg gespeichert (Crash-Dump wird automatisch gescannt)
  • Unterschiedliche Einfärbung verschiedener Prozesse, Threads und Tasks zum besseren Auffinden
  • Messages lassen sich nachträglich ändern (Text, Vorder-/Hintergrundfarbe) zur Dokumentation
  • Programmierte Filter zu- und abschaltbar
  • Verschiedene Datenspalten ein- und ausblendbar
  • USB-, UART-, CAN- und Netzwerk-Geräte lassen sich speziell beobachten
  • Memory-Viewer zum Ansehen von physischem Speicherinhalt
  • PCI-Viewer zum Analysieren von PCI-Geräten
  • Mitgeliefertes SDK ermöglicht Programmierung eigener Trace-Quellen

Anwenderspezifische Meldungen

Sie können eigene Meldungen an den Tracer übergeben, z.B. um Variableninhalte darzustellen oder das Eintreten besonderer Programmzustände zu signalisieren.

In den Tools der »RealTime Suite« stehen dafür die Funktionen KS_logMessage und KS_vprintK zur Verfügung. KS_logMessage kann von allen unterstützten Sprachen genutzt werden, KS_vprintK verwendet eine variable Argumentliste und ist daher von C/C++ aus verwendbar.