What′s New in dotTrace

This page guides you through notable updates in recent dotTrace releases. Highlights include support for Visual Studio / JetBrains Rider and simplified profiling of async code.

Free trial for 10 days of actual use

Support for macOS and Linux in JetBrains Rider 2019.1

If you use JetBrains Rider, you can run dotTrace on macOS and Linux to profile Mono and Unity applications.

Profiling Mono and Unity applications

Profiling Mono and Unity applications 2019.1

dotTrace lets you profile Mono 5.10 or later and Unity 2018.3 or later applications on Windows, macOS, and Linux.

New profiling API

New profiling API 2019.1

As you might know, dotTrace includes the profiling API that is used to control profiling sessions right from the code of your application. In 2019.1, we have rewritten this API from scratch to make it more user-friendly:

  • We got rid of the state machine.
  • We reduced a number of methods you have to use. Thus, to start profiling, simply call MeasureProfiler.StartCollectingData(). To stop collecting data and save a snapshot, call MeasureProfiler.SaveData().
  • The API is available as a NuGet package.
Command-line profiler improvements

Command-line profiler improvements 2019.1

The dotTrace command-line profiling tools get improved:

  • The start and attach commands now accept advanced profiling parameters, like time measurement type and others.
  • The Reporter.exe tool accepts the --save-signature argument that allows you to distinguish overloaded methods in the final report.

JetBrains Rider integration 2018.3

In addition to Visual Studio, now dotTrace is a part of the JetBrains Rider IDE on Windows. You can configure and run profiling sessions, get snapshots, and analyze them in the built-in viewer.

Improved memory allocations filter

Improved .NET Memory Allocations filter 2018.3

Timeline Viewer gets a new subfilter that allows you to analyze how the allocated memory is distributed between the objects of a certain type.

Improved IIS Express profiling settings

Improved IIS Express profiling settings 2018.3

Now, the default way to profile a web app hosted on IIS Express is to provide dotTrace a applicationhost.config file.

Support for Visual Studio 2019 Preview 1

Visual Studio 2019 Preview 1 support 2018.3

dotTrace 2018.3, along with other products of the ReSharper Ultimate family, can now be installed into Visual Studio 2019 Preview 1.

Include process filter

.NET process filter 2018.2

Though, this release was mainly focused on improving dotTrace performance, we've also improved profiling of arbitrary .NET processes. Now, when configuring a profiling session, you are able to set an include filter: dotTrace will attach only to a process that matches the filter.

Improved performance

Improved performance 2018.1

The main scope of this dotTrace release was stability and performance improvements.

Support for async calls

Support for async calls 2017.3

The downside of asynchronous code is it's extremely difficult to profile and analyze its performance.

dotTrace 2017.3 dramatically simplifies the analysis of asynchronous code. It marks all async call nodes in the Call Tree and groups the corresponding await time and continuation code under that node. This means that you can quickly find all "parts" of an asynchronous call in one place instead of searching in different call stacks.

To learn more, see Analyzing performance of asynchronous .NET code with dotTrace.

Forecasting performance in Timeline Viewer

Forecasting performance in Timeline Viewer 2017.3

Do you remember the "performance forecasting" feature in the Performance Viewer?

Now, you can do the same thing in the Timeline Viewer. Simply exclude a particular method from the Call Tree, and dotTrace will recalculate the entire snapshot as if there is no such method.

Backtraces in Methods and Subsystems

Backtraces in Methods and Subsystems 2017.3

When examining a list of top methods in Methods and Subsystems, it may be helpful to quickly view backtraces (an inverted call tree) of a particular method to identify its origin. Now, you can do this right in Methods and Subsystems without switching to the Call Tree.

Marking user assemblies as system ones

Marking user assemblies as system ones 2017.3

Sometimes, you may want dotTrace to treat particular user modules/assemblies as system ones. This may be helpful, for example, in case the user modules provide some core functionality and are not supposed to be optimized.

After you mark a user module as a system module, all rules that are applied to methods from system modules will be applied to methods from this user assembly as well: e.g. the way the methods' time is calculated in Methods and Subsystems and system calls folding.

Navigation path in Call Tree

Navigation path in Call Tree 2017.2

When navigating a call tree, it's always been tough to understand how you ended up at a particular function. Not anymore with dotTrace 2017.2: the Call Tree view shows all your transitions in the left gutter.

Timeline profiling from command line

Timeline profiling from the command line 2017.2

The command-line profiler finally supports the Timeline profiling type.

It's also worth noting that dotTrace command-line tools are now available as a NuGet package.

Attach with drag and drop

Profile running apps with drag and drop 2017.1

You can now attach the profiler to running applications using drag and drop. Simply drop a special icon onto the application window that you want to profile.

Download dotTrace
Free trial for 10 days of actual use