Traces

The “Traces” page of Raygun APM is where you can find all the traces for your application. You can filter and sort them by using the filter UI and the header row of the traces table.


Add traces to an issue

You can manually add one or more traces to an issue (which will appear on the Issues page of Raygun APM). Issues are automatically created by Raygun and displayed for you on the Issues page, but if you wish to make an manual issue, you can select one or more of the traces on the “Traces” page and click on the “Add to issue” button.


Viewing an individual trace

You can click on a trace name from the traces table to view the details of an individual trace.

On this page, you can view the trace detail by:

Flame chart

The flame chart shows you the state of the stack for your code at every millisecond during the performance profile.
This gives you a way to know exactly which function was executing at any point during the recording, how long it ran for, and where it was called from.

You can zoom in and out of the flame chart by using your mouse scroll wheel or by adjusting the two points on each end of the timeline chart. You can hide or expand the sidebar of the flame chart by using the UI elements highlighted below.

If you wish to view the hot path of your trace, you can use the ‘show hot path’ toggle to enable this. This will change the colors of the flame chart below to give you a clearer indication of the series of calls which made up the majority of the total time taken.

If you wish to learn about a specific call in your flame chart, just click on a colored bar and the details of the call will be displayed for you further down the page in the details section.

Multithreaded traces

The flame chart has some specific elements that only show up when a trace contains multiple threads of execution.

By default, each thread of execution except for the primary thread is collapsed. A collapsed thread can be expanded in two ways.

  1. By hovering over the call that started the thread, this will highlight the thread that was started. Clicking it will open the thread, clicking it again will collapse the thread
  2. By hovering over the dashed line that says “EXPAND THREAD”. Clicking it will open the thread, clicking it again will collapse the thread

Each thread of execution is visible in the time range bar at the top of the flame chart. Threads that are collapsed are transparent. The threads are ordered by the order they were created in

If you hover over a call that spawned a thread the tooltip will indicate what action caused the thread to be spawned. For example, was it created using new Thread or was it created using await?

Special support for async/await multithreading

If your trace is only composed of async/await code without any points of overlapping execution the flame chart will change to a special multithreaded rendering mode. In this mode instead of displaying each thread of execution as a distinct thread they are instead displayed as a single thread of execution. This better reflects the fact that code written in an async/await style is conceptually a single thread of execution.

When a trace is rendered in this mode there can be cases where system code is being overlapped by other system code execution. In the event this happens a dashed line will be inserted at the overlapping point to clearly indicate that this is happening.

If you prefer to see the trace with each thread of execution represented as a distinct thread you can toggle the “Expand threads” switch at the top of the flame chart to separate each thread.


Call tree

To view the trace detail by call tree, simply click on the “Call tree” tab above the flame chart.

The call tree and the flame chart are both used to analyze your app’s code, and they both use the same data: a sample of the provider’s stack, taken periodically during the recording. Call tree organizes this data to show you where your program is spending most time in aggregate across the recording.

Just like the flame chart, you can enable the “show hot path” toggle to turn on the hot path highlighting in your trace details. You can also click and expand on a parent trace to view more details about its child traces.

If you wish to learn about a specific call in your call tree, just click on the magnifying glass icon on the right hand side of a call and the details of the call will be displayed for you further down the page in the [details section][4].


Raw data

The raw data tab gives you the raw trace data that Raygun APM had captured for this trace. You can use the “Download” button to download a JSON file of this trace.


Details section

The details section sits at the bottom of every trace detail page. It provides you with the details of the call, such as the execution time, the parent %, whether there are duplicates and whether it’s on the hot path. In addition, this area also has a great link to source feature with GitHub.


Just like Crash Reporting’s link to source feature, Raygun APM enables you to click directly from the trace detail page into your source code in GitHub. GitHub Enterprise, GitLab and Bitbucket support for this feature will be added in the future.

If you already have GitHub integrated, great news! You don’t need to do a thing.

When you click on a colored block on the flame chart or the magnifying glass icon from the call tree tab, your code should display automatically in the details section of the trace detail page, like so (you might need to scroll right down this page to see this information):

If you click on the GitHub icon below the code block (highlighted above), it will take you directly to the exact line of code in your source file inside GitHub.

If you haven’t set up the link to source yet, the good news is that it is super easy. Simply follow our GitHub integration guide to quickly and securely get set up in minutes.

Not using GitHub for source control? Don’t worry, the GitHub Enterprise, GitLab and Bitbucket support for this feature will be added in the future. We will notify everyone when they are available.