You can perform a kernel event trace while running applications with function instrumentation enabled. Combining application and system profiling lets you log the events generated by the instrumentation code to the kernel event trace log. These events provide function entrance and exit times and thread call stacks.
This workflow is handy when you suspect that other processes are impacting an application's performance at startup because the kernel event trace tells you how much memory and CPU is consumed by different target processes. It's also useful for examining the interaction between a short-running program and other processes. However, any tracing activity should be limited to a few seconds because longer traces produce too much data to be useful.
To profile functions, your source files must be compiled with -finstrument-functions and your binaries linked with -lprofilingS; for details, see Enabling function instrumentation.
The IDE switches to the QNX Analysis perspective. If necessary, the IDE first builds the binary. Then, it uploads the binary and starts running it on the target. At this time, a new session is created and displayed in the Analysis Sessions view. As the application runs, profiling results are sent to the IDE, which stores them in the new session and presents them in the Execution Time view.
The kernel event trace also runs and when it finishes, the IDE prompts you to open the log (.kev) file. If you choose Yes, the IDE switches to the QNX System Profiler perspective and displays the trace results. The application being profiled continues to run (assuming it hasn't terminated on its own) and you can still switch back to the QNX Analysis perspective to examine the profiling results at any time. Note that with function instrumentation, deep and shallow times have distinct meanings.
When viewing the trace results, you can extract any profiling data captured during the trace period into a new Application Profiler session.