Kithara »Kernel Tracer«
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, z.B. AMD Athlon 64 X2 oder Intel Core Duo) hängt das Ergebnis des Programmablaufs oftmals davon ab, dass 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.
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 Kithara »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 Kithara »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, Programme, Anwendungs- und Kernel-Ebene
- Multi-Core: Zeitlich korrekte Zuordnung der Messages bei mehreren CPUs (SMP, HyperThread, Dual-Core etc.)
- 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: Löschen, vorübergehendes Ausblenden, Fett-, Kursiv- und farbige Darstellung von Messages
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 nur von C/C++ aus nutzbar.
Hinweis: In der Datei _KitharaSmp.cpp im Unterverzeichnis smp\_KitharaSmp finden Sie eine Funktion KS_printK (ohne "v"), die Sie in Ihr C/C++-Projekt einfügen können und die eine printf-ähnliche Benutzung erlaubt. Diese Vorgehensweise ist notwendig, da Funktionen mit cdecl nicht compiler-übergreifend kompatibel sind. Das Ergebnis sehen Sie hier:

Achtung! Beim Tracen von der Kernel-Ebene aus muss sich der Format-String im Shared Memory befinden! (Siehe Beispiel "TimerCallBackRT")


