The Threads diagram visualizes threads activity and filtered time intervals (in case filters are applied). Use the diagram to select threads and time intervals that are interesting for analysis.
Thread name* or thread type (if a thread does not have a name).
dotTrace distinguishes the following thread types:
The thread that starts the application.
A thread created by the CLR Thread Pool.
A worker thread created by CLR.
A thread that performs background garbage collection.
A thread that performs object finalization.
An unmanaged system thread.
ms / MB / events
Filtered time / allocated memory / number of events. For example, if Time subject is selected and no other filters are applied, this will be the entire thread lifetime. If, for instance, you select Waiting in the Thread State filter, this time will be a sum of all Waiting time intervals.
The percentage of the filtered time / allocated memory / number of events relative to all selected time intervals / allocated memory / number of events.
Thread activity timeline
The timeline distinguishes three thread states: Running, Waiting, Ready (corresponding to the Thread State filter). After you apply any filter, the timeline will highlight the filtered time intervals or point events.
To select threads:
- Click on the desired thread(s).
After you select a thread(s), the filter by Thread will be applied. All other filters will show data only for the selected thread(s).
Use this to analyze only specific threads.
In some cases, it may be convenient to select all threads of a particular type.
To select threads by type:
- Open the context menu for any thread which belongs to the type you want to select.
- In the context menu, choose Select All <Type_Name> Threads.
Selecting Time Interval and Thread
To select a time interval:
- Drag the mouse over the desired interval and thread holding the left mouse button.
After this, the Selected Time Interval and Thread filter will be applied. All other filters will show data only for the selected time range and thread.
To simplify analysis, you can hide threads that are not currently interesting (for example, do not perform any work on the selected time interval).
To hide a specific thread:
- Open the context menu for a thread you want to hide.
- In the context menu, select Hide Thread#<ID>.
To hide (non-)selected threads:
- Select threads.
- In the context menu, select Hide Selected Threads or Hide Non-Selected Threads.
To hide threads by type:
- Open the context menu for any thread which belongs to the type you want to hide.
- In the context menu, select Hide All <Type_Name> Threads.
By default, the list of threads is sorted by their creation order. By clicking on the column headers, you can sort threads by other criterion: ID, Type, ms / MB / events, %. The column that is currently used for sorting is marked with the sign.
In some cases, it may be convenient to have a certain thread on top of the list regardless of the sorting order. Use the Move to Top option in the thread's context menu to move any thread to the top.
To zoom in/out the diagram:
Do one of the following:
- Press Ctrl + Use the mouse scroll wheel.
- Press Ctrl + Drag the mouse holding the left mouse button.
After you zoom the diagram, the Visible Time Interval filter will be applied. All other filters will show data only for the currently visible intreval.
If a time interval is selected on the diagram, you can zoom in to this interval.
To zoom in to the selected time interval:
- Press Ctrl+O or select Zoom to Selection in the context menu.
After this the selected time range will take the entire diagram.
To pan the diagram:
- Drag the mouse holding the right mouse button.