Kithara »Kernel Tracer«
Multi-Source Real-time Tracer
By using the »Kernel Tracer« it is possible to trace and log internal processes of real-time applications in detail.
During program development effective tools are necessary, for example for debugging. Until now, debuggers were mostly used on this. But concerning multithread-programming a debugger is often limited in use, because it has an effect on the process.
If you use more than one thread and a PC with multiple CPUs (multi-processor systems, Hyperthreading and dual-core/multi-core, e.g. AMD Athlon 64 X2 or Intel Core Duo) simultaneously, the result of the program process dependens on the capability to execute particular program parts at the same time. A debugger cannot assure this.
- By using a debugger the whole process becomes mixed up.
- A program runs not as expected, but by using a debugger erverything works.
- The debugger has not the capability to work in a real-time context.
The solution is a tracer tool, that is able to log the actual process of simultanious routines and analyse the log.
The »Kernel Tracer« is a multi-source real-time message logger. It supports debugging, quality assurance, and in general detecting relations, which are otherwise indeterminate.
The »Kernel Tracer« gathers every trace message, that arises from different sources of the system in the order of their appearance. Messages from different sources appear actually on different taps, but it is possible to merge them. It is possible to handle hundred of thousands messages per second. In order to find the important information in the huge amount of data, the »Kernel Tracer« provides several mechanisms to filter and search messages.
The »Kernel Tracer« provides amazing insights in the actual processes of a PC, for example at the kernel level. Besides the illustration through Kithara functions you have the possibility to create messages on your own, which can be illustrated with useful additional information.
Features of the »Kernel Tracer« in Detail:
- Multi-source: Support of any number of threads and any routines from application and kernel level (real-time)
- Multi-core: Accurate allocation of messages from several CPUs (with SMP, HyperThread, Multi-Core, etc.) according to the time point they were generated
- High processing speed (hundreds of thousands of messages per second possible, if performance available)
- Every function call of the »RealTime Suite« is illustrated by function arguments
- User-specific messages can be generated by tools of the »RealTime Suite« (similar to printf with C/C++)
- Messages are illustrated with a lot of details: Including the system time in a 0.1 microsecond resolution
- It is possible to filter, merge, save and reload messages
- Filtering enabled: Permanent deleting, transient hiding, bold, cursive and colored illustration of messages.
- Colored illustration enables accentuation of errors and warnings
- Further context details: Logical CPU, thread and/or process-ID, real-time task-ID, consecutive message number and type, thread and task priority, content of data blocks (of selected messages)
- Search for messages by text, date and all other fields
- Messages masks prevent unnecessary generation of non-required messages
- Messages were saved across BSOD (Crash-Dump will be automatically scanned)
- Different coloring for different processes, threads and task for better discovery
- Possibility to change messages afterwards (text, foreground and background color) for documentation
- Possibility to switch the programmed filters on and off
- Possibility to show and hide data columns
- Possibility to monitor USB, UART, CAN and network devices specifically
- Memory viewer to visualize the physical memory
- PCI viewer for analyzing the PCI devices
- Provided SDK facilitates the programming of own trace sources
You can forward your own messages to the tracer, for example to display variable contents or signalling the occurrence of special program states.
The tools of the »RealTime Suite« provide the function KS_logMessage and KS_vprintK for it. KS_logMessage can be used from all supported languages; KS_vprintK uses an argument list and therefore can be controlled by C/C++ .