What′s New in dotTrace

This page guides you through notable updates in dotTrace versions 10, 2016.1, 2016.2 and 2016.3. Highlights include a dedicated Performance Profiler tool window in Visual Studio and an easier view of recursion in call stacks.

Free trial for 10 days of actual use
Support for Visual Studio 2017 RC

Visual Studio 2017 RC initial support 2016.3

dotTrace 2016.3, along with other products of the ReSharper Ultimate family, can now be installed into Visual Studio 2017 RC.

Recursive call stack in Timeline Viewer

Subsystems in Timeline Viewer 2016.3

In 2016.3, Timeline Viewer gets one of the greatest Performance Viewer's features: Subsystems.

The mechanics of Subsystems are quite simple: in most cases, each subsystem just groups calls made within a certain namespace or assembly. It is extremely useful when you need to quickly evaluate how time in a particular call subtree is distributed among various components: user and system code, WPF, LINQ, collections, strings, and more.

Subsystems are very flexible. If you use third-party frameworks in your solution, simply add the corresponding subsystems to dotTrace. Just a quick glance at the call's Subsystems will allow you to understand how much time this call spends in a particular framework.

Analyze native memory allocations 2016.3

dotTrace 2016.3 is able to collect data about memory allocations made to the native heap.

The Native Memory Allocation event filter allows you to see what methods are making the allocations and analyze all issues related to the native memory: potential memory leaks, issues with unmanaged components used by your managed code, and so on.

Debug Output event filter

Analyze application's debug output 2016.3

dotTrace gets a new Debug Output filter which can be very helpful for advanced debugging. When selected, timeline will show you only events where your application writes to the debug output, e.g. with the Debug.Write system method.

Events tool window

Events window 2016.3

As the name suggests, the new Events tool window simply shows you event log — a list of events occurred in the profiled application: file operations, JIT, SQL queries, and more.

Use the window as you would use any other event log: to investigate complex cases and bugs when the data provided by other filters is not enough.

.NET Core support

Profile .NET Core applications out of the box 2016.3

Now, if you have .NET Core tools installed on your computer, you can profile .NET Core applications without any additional actions.

The workflow is pretty straightforward. Simply select .NET Core Application on the Home page, specify the executable and click Run.

Improved Call Stack

Improvements in Call Stack window 2016.3

The Call Stack window gets multiple improvements:

  • We returned the Hide system functions option that was helpful in analyzing a method's own execution time.
  • The methods list now shows total time in addition to every method's own time. Total time includes the execution time of the entire call subtree.
  • You can now click on a method's own or total time in the methods list or call tree. This applies a filter by the corresponding method (if you clicked on the own time link) or by the method and its subtree (if you clicked on the total time link).
  • The methods list can now follow your selection in Call Tree. When you select a particular method in Call Tree, the list of methods is rebuilt to only show child calls of the selected method.
Recursive call stack in Timeline Viewer

Recursive call stacks in Timeline Viewer 2016.2

Recursive call stacks can be deep and difficult to analyze.

Before 2016.2, Timeline Viewer displayed recursive calls as they were called: one after another in the stack trace. Of course, on complex call stacks with multiple recursive calls this resulted in almost infinite stack scrolling.

In dotTrace 2016.2, Timeline Viewer allows you to fold such calls to simplify stack analysis.

Timeline diagram in Visual Studio with smart tooltips

Timeline in Visual Studio with smart tooltips 2016.1

Before dotTrace 2016.1, the main drawback of the integrated viewer compared to its standalone counterpart was the absence of the Threads diagram. Now, the integrated viewer gets exactly the same diagram, which you can use to select threads, time range, and of course, view thread activity and filtered time intervals.

In addition, Threads diagram in both standalone and Visual Studio viewer gets smart tooltips. Hold the mouse over a specific time point on the timeline to display a tooltip showing the current thread state, executed method, and more useful info.

Tooltips are context-sensitive. This means that if some filter is applied, the tooltip will contain additional data on the filtered event. For example, when the File I/O filter is selected, the tooltip additionally shows info about file operation, file name, and data size.

Profiling in Visual Studio

Profiling inside Visual Studio 10

dotTrace 10 and later makes its Timeline profiling available right in Visual Studio using a dedicated Performance Profiler tool window.

This enables you to profile, view performance timelines and call stacks, apply filters, view top methods, investigate times by thread, and perform many more performance profiling actions without leaving your IDE. Of course, if you ever need to, you can still choose to open any snapshot in the standalone dotTrace Timeline Viewer.

Timeline integration is available in Visual Studio 2010 through 2015.

ReSharper Ultimate installer

Integration with latest ReSharper 10

Starting with dotTrace 6, we offer a common installer for all ReSharper Ultimate tools. All these tools use a lot of shared assemblies, which helps put less memory pressure on Visual Studio. Actions provided by these tools including dotTrace are now available in Visual Studio from the ReSharper menu.

Recent versions of dotTrace integrate with ReSharper for profiling unit tests from Visual Studio code editor, Solution Explorer or ReSharper's unit tests runner.

Download dotTrace
Free trial for 10 days of actual use