Kernel event trace log configuration

The IDE uses log configurations to remember settings for running kernel event traces. You can select a log configuration and perform a kernel event trace from the launch bar or the Target Navigator. The log configuration fields let you filter what information gets logged and set how long the trace runs.

The preferred way of accessing a log configuration is through the launch bar. The configuration editor that gets opened displays multiple tabs for entering the configuration fields. The fields in each tab are described in the tables that follow. The OK button at the bottom of the editor saves the current settings and closes the window, while Cancel closes it without saving the settings.

If you go through the Target Navigator and access the Log Configurations window, you'll see the different log types in the left pane, with an entry (Neutrino Kernel Event Trace) that lists the available kernel event trace configurations. When you select one of them or create a new one (by clicking that same entry and then New launch configuration (Icon: New launch configuration) in the upper left corner), the window displays the same tabs but also has a text field at the top for entering the configuration name.

Table 1. Main tab fields
Name Description
Save Log in
The location to save the log file containing the kernel event trace data. You can:
  • leave the field blank to use the default location, which is the project directory for the target
  • enter an absolute path (e.g., C:\Users\username)
  • click Browse Workspace... to select a workspace location from a project explorer
  • click Browse Filesystem... to select a local directory from a file selector
Save Log Configuration as Whether to save the configuration locally, so it's accessible to only those users with access to the chosen directory, or in a shared location, so it can be shared with developers working on other projects. For the shared setting, you must either enter a project location (e.g., \project_name\logs) or click Browse to select a location from the project explorer.
Table 2. Trace Settings tab fields
Panel Name Description
Tracing duration Period of time This radio button lets you limit the data capture by time. The value that you enter in the adjacent text field sets the number of seconds that the kernel event trace runs for.
Note: Any kernel event trace should be limited to a few seconds because longer traces produce too much data to be useful.
Tracing duration Number of iterations This radio button lets you limit the amount of data captured. The text field must contain a positive integer to set how many kernel event buffers are used.
Trace collection Save on target then upload Click this radio button to make qconn write the kernel event buffers to a file on the target and then upload that file to your workspace.
Trace collection File path on target The target location for writing the kernel event log file. In the text field, you can enter an absolute path that includes the filename or a relative path. In the latter case, the file is written to /dev/shmem/.
Trace collection Memory mapped file then upload Click this radio button to make qconn write the kernel event buffers to a memory-mapped file on the target and then upload that file to your workspace. With a memory-mapped file, you can limit the amount of kernel data logged, based on file size.
Trace collection Filename on target The name of the kernel event log file. This file is written to /dev/shmem/ because it must be kept in shared memory. In the text field, you can enter only a filename and not a path.
Trace collection Max file size The maximum size for the log file. If the file reaches this size, any additional data are discarded. Standard byte size modifiers—B, K, M, and G—are allowed. If no modifier is given, the bytes unit is assumed.
Buffers Number of kernel buffers The size of the static ring of buffers allocated in the kernel.
Buffers Number of qconn buffers The maximum size of the dynamic ring of buffers allocated by qconn.
Table 3. Event Filters tab fields
Name and scope Description
Mode (General)
A general setting for the amount of information to capture in the log file. One of:
  • Fast — Less information is captured, which means less work for the kernel and a smaller file.
  • Wide — More information is captured, which means more work for the kernel and a larger file.
  • Class Specific — The amount of information captured varies with the event class.
Note: The other Event Filters fields aren't shown if you select Fast or Wide. If you select Class Specific, the UI displays fields that you let set the mode for each class.
Mode (Class-specific)
The amount of information to capture for events of a particular class. This field is shown for:
  • Kernel Calls
  • Interrupts
  • Process and Thread
  • System
  • Communication
  • Security
This field can be set to Disable (to disable logging for a given class), Fast or Wide (which have the same meanings as they do at the general level), or Event Specific (to configure logging for individual event types). With this last setting, the UI displays a grid with a mode selector for each event type. The default mode is Fast for all event classes, except for Process and Thread, for which it's Event Specific.
Name (Event-specific)

The name of the event type.

Click the Mode entry in a row to change the logging mode only for that event type. Multi-select is also supported, by holding the Ctrl and/or Shift keys when selecting event entries. After you select multiple event types, you can change the logging mode for all of them by clicking the Set All Selected Properties To... button at the bottom, then selecting the mode from the dropdown list in the Properties Editor dialog box.

Mode (Event-specific or in Properties Editor)

The amount of information to capture for the selected event types. This setting can be Disable, Fast, or Wide (which have the same meanings as they do at the class-specific level).

For the Process and Thread event class, the default mode is Fast for all event types, except for Running, for which it's Wide. For all other event classes, all individual event types will be initially set to Fast mode when you select a class-specific mode of Event Specific.

Note: For information about each trace event, including the data emitted for the Fast and Wide modes, see the Current Trace Events and Data chapter in the System Analysis Toolkit User's Guide.
Table 4. Address Translation tab fields
Name Description
Enable address translation

A checkbox that turns address translation on or off. Address translation makes the IDE map each function event to a source file and line number and display these data in the Trace Event Log view.

In the Timeline pane in the System Profiler results, you can show data related to address translation.

Binary Locations

A tab that lists the search locations for binaries. The log file content must be matched with the binary files in your workspace for address translation to occur.

The Add button on the right brings up the project explorer, allowing you to select a project folder to search for binaries in. Other buttons let you remove locations or change their search order.

Binary Mappings

A tab that provides a grid listing of all binaries on which address translation can be performed, and their load addresses and process names. You must first add search locations in Binary Locations before you can define mappings (i.e., translations).

The Add Binary button on the right opens the Binary Object Selection window, where you can enter the filename of an executable or click Browse to select an entry from the list of executables found in the previously specified locations. The same window also lets you override the executable binary's default load address and process name.

To perform address translation on a library used by an executable binary, select the binary's entry and click Add Library, which also brings up the Binary Object Selection window. Here, you must define the shared object name, and you can override the library's default load address. For information about disabling default address loading, see the next subsection.

In Binary Mappings, you can click Edit to redefine the binary name, load address, or process name for the selected entry. There's also a Remove button to delete it.

Finally, the Import button opens a file selector that lets you pick a file that contains the output of the pidin mem command. When you pick such a file, the IDE populates the list with information about all processes listed in the pidin results that were redirected to the file. Note that you must first run such a command on the target (e.g., pidin mem > pidin_results.txt).

Address Translation

Address translation is an IDE feature that maps the virtual address of each function listed in the kernel event trace log file to a source file and line number. By revealing function locations, the translation makes it easier to interpret events; when it's disabled, only virtual addresses are shown.

You can configure this feature through the Address Translation tab. By default, the Binary Object Selection window opened by the Add Binary and Add Library buttons specifies that the load address of the binary file should be automatically discovered. This makes the IDE analyze the log file to find library addresses, which it then displays for function events. Any discovered addresses are stored in the Trace Event Log data so the lookup isn't done every time you open the log file.
Note: Address translation is automatically done for any applications built with function instrumentation and run during a kernel event trace.

If auto-discovery of library addresses is unsuccessful, the IDE warns that you need to manually set the address information. You can disable the warning by selecting Window > Preferences > QNX > System Profiler > Address Translation Configuration, then unchecking Provide a warning if auto-discovery address translation fails. But if want to see the addresses, you should check the Event Filters tab to ensure that for System events, the generation of MMap Name and MMap Name (64) events is enabled.

If you uncheck the Auto-discover load address box, you must enter a nondefault address in the text field above. You would only do this if there was a bug that you needed to work around.