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 Target Navigator view. The log configuration fields let you filter what information gets logged and set how long the trace runs.

In the Target Navigator, when you right-click a project and choose Log With > Kernel Event Trace the IDE displays a dialog that lists existing log configurations, allowing you to reuse saved kernel event trace settings, and provides the Open Launch Config button, allowing you to define new settings. If you click the button, the Log Configurations dialog appears and you can click the Neutrino Kernel Event Trace entry in the left pane and then the New launch configuration button () in the upper left corner.

The Launch Configurations dialog displays multiple tabs and 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.
Target Selection The target on which you want to run the trace. You must click an entry in the list, which displays the QNX Target System projects you've created in the workspace.
Note: The target must be connected for you to run a kernel event trace on it. If it's connected, you see a purple circle symbolizing a physical connector but with no red box (), on the left of the target name. If it's not connected, you see a red box with an X in the lower left corner of the icon (), and the text (Not connected) after the name.
Table 2. Trace Settings tab fields
Panel Name Description
Tracing duration Type This dropdown controls the units for measuring tracing duration. You can choose either Period of time, to limit the data capture by time, or Number of iterations, to limit the amount of data captured.
Tracing duration Period length Depending on Type, this field's value is either the number of seconds that the trace runs for or how many kernel event buffers are used.
Note: A time-based kernel event trace should be at most a few seconds because longer traces produce too much data to be useful.
Trace file Mode
In this dropdown, you can select:
  • Save on target then upload — makes qconn write the kernel event buffers to a file on the target and then upload that file to your workspace
  • Stream — makes qconn continuously stream the kernel event data to the IDE on the host, while the trace is in progress
Trace file Filename on target The target location for writing the kernel event log file. Available only for the save-on-target mode, this field lets you enter an absolute or a relative path. In the latter case, the file is written to /dev/shmem/.
Trace statistics file Mode
In this dropdown, you can select:
  • Do not generate — prevents qconn from writing a trace statistics file
  • Generate only on the target — makes qconn write the statistics file on the target, but not automatically upload it to the host
  • Save on target then upload — makes qconn write the statistics file on the target, then upload it to the host
Trace statistics file Filename on target The target location for writing the trace statistics file. Available only for the last two file-generation modes, this field lets you enter an absolute or a relative path. In the latter case, the file is written to /dev/shmem/.
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.

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.