Home> Products> dotTrace> Features
Fresh Update
dotTrace 4.0 Performance Beta
  • Integrates with Visual Studio 2005, 2008, and 2010.
  • Introduces line-by-line profiling.
  • Supports Silverlight and Windows Mobile applications.
  • Allows profiling remote applications.
  • Survives server-scale snapshots.
read more »

dotTrace Profiler Features

Performance profiling

dotTrace provides an extremely fast way to profile the performance of .NET applications (frameworks 1.x, 2.0 or 3.x).

Convenient data representation

A number of informative views (Call Tree, Hot Spots and more) allow convenient inspection of profiling data stored in snapshots. The importance of each function call is represented with descriptive icons, along with precise execution times and other relevant information. You can open functions in individual tabs, easily navigate views with keyboard shortcuts, skip through unimportant or filtered calls, and create profiling reports by saving any view to an external file.

Convenient data representation

to the top

Versatile profiling modes

dotTrace offers two additional performance profiling modes: Sampling profiling (vs. Tracing profiling) and Routine thread time measurement (vs. Wall time measurement). A total of 4 possible profiling modes are now available.

  • Sampling profiling is a profiling method which is up to 30 times faster than regular tracing profiling, but at the expense of lower accuracy. It is extremely useful for at least two profiling scenarios: first, quickly getting a general idea of your application's performance, and second, profiling for extensive periods of time, up to many hours long.
  • Routine thread time is measured by a thread-specific timer which is paused when its thread is paused. Using this mode, dotTrace can measure the contribution of individual threads in multithreaded applications, reducing interference between threads.

to the top

Performance snapshot comparison

dotTrace is able to compare any two performance snapshots of the same application. It generates a comparison snapshot which shows the difference in the number of calls and times consumed by each function. Comparison snapshots can be viewed and analyzed the same way as regular performance snapshots.

Performance snapshot comparison

to the top

Quick Info

You can look up Quick Info on any function from the Call Tree view. The lookup window provides a summary of function statistics with respect to the selected call and to all calls in the current tab.

Quick Info

to the top

Filtering

You can apply predefined and customizable filter patterns to focus on the functions most important to you. Filter out system calls and other nonessential functions with a combination of different Hide filters. Emphasize specific functions of selected classes with one or more Show filters.

Filtering

to the top

Folding and advanced filtering

dotTrace makes it much easier to see all the data you want to see and none that you don't.

  • Fold filtered calls
    Chains of filtered calls can be set to be folded by default or folded/unfolded manually.
  • Fold recursive calls
    Recursive call chains can be folded to display the aggregate timings and call counts of all functions called recursively.
  • Folding recursive calls
  • Hide functions with 0% of root time
    Functions that consumed 0% of root time can be hidden from view.

to the top

Find function

Quickly locate functions and navigate to them. Optimize the way you like to search: type in the function name or use the provided list of namespaces and classes to go through the hierarchy.

screenshot

You can highlight all occurrences of the function in the current view and then navigate between them with a simple press of a key. You can also quickly open the function in a new tab, or view its Quick Info.

to the top

Tab saving

Individual tabs in performance snapshots may be saved as separate snapshots.

screenshot

to the top

Memory profiling

With dotTrace you can quickly profile the memory usage of your .NET applications (frameworks 2.0 and 3.x only). The profiling process is not only simple but fast. A wealth of profiling data is accurately recorded and presented in the form of memory snapshots, allowing thorough analysis of memory issues.


Versatile memory profiling modes

Depending on your needs, you can profile memory in two different ways:

  • To check what objects are currently loaded in memory (but shouldn't be), you can dump memory at any time during profiling.
  • To also view the difference between two application memory states, during profiling you can mark the start and the end of a time interval, then capture a snapshot containing the difference data. A difference snapshot lets you see how much new memory was allocated and how much was released during the marked time interval. The view can be filtered to show only Live objects, only New objects, only Dead objects, only Garbage objects, or the difference between New and Dead objects.
View difference between application memory states

to the top

Convenient data representation

Each memory snapshot holds a wealth of data on all objects allocated in memory, from the roots to every single object allocated or deleted at any time during the profiling session.

A number of views are available to you for examining and analyzing memory snapshots, including Class List, Namespace Tree, Outgoing references, Shortest root path, and Allocation Tree. You can also focus on any subsystem of your application by opening it in a separate tab.

to the top

Find objects by class

To help you locate the presence of particular class of objects in memory, dotTrace provides the rapid Find objects by class (Ctrl+N) search feature. The use of wildcards and CamelCase abbreviations is supported for faster search results.

Find objects by class

to the top

Finalized objects

dotTrace lets you see finalized objects — objects which were deleted by the finalizer. You can examine them to find that some were not properly disposed of in the code of your application, which is a potential memory leak.

Finalized objects

to the top

Merging strongly-connected objects

When you are navigating though the graph of objects in memory, some dependencies are difficult to see at a glance. dotTrace offers an easy way to merge (group) strongly-connected objects together, so that you can see which objects and/or groups any particular node is holding.

Merging strongly-connected objects

to the top

General Features

Fastest profiling

dotTrace decisively outperforms its in-class competitors. This fact alone ensures that you save valuable time with its profiling speed and ease of use.

to the top

Source view

dotTrace automatically locates the underlying source code for selected functions. If necessary, you can manually specify the appropriate source code location by browsing to the source files.

Source view

If your solution is currently opened, click the quick link in Source View to navigate to the corresponding source file in Visual Studio.

You can also configure source lookup to make sure dotTrace looks in the right place for source files. Define folder substitutions in case your code has been moved, or to allow your development team to see the same snapshots and view the source code correctly.

to the top

Multiple snapshots

dotTrace easily handles multiple snapshots, providing you with all-around profiling convenience. First, you can generate an unlimited number of snapshots of the same application during a single profiling session. Second, you can open several snapshots at the same time, so that you can compare and contrast them (for performance snapshots, this can even be done automatically).

to the top

Profiling ASP.NET applications

dotTrace easily profiles ASP.NET applications running on IIS, versions 5.x, 6.0 and 7.0, and/or on Visual Studio Development web-server. Simply specify the start page URL of your web application and profile it the same way as a desktop program. ASP.NET applications can also be profiled from Visual Studio.

to the top

Windows services profiling

dotTrace lets you easily profile Windows services. Just select the service from the list of all available Windows services and profile it the same way as web applications.

to the top

Integration with Visual Studio


  • Run dotTrace from Visual Studio — with the click of the button button you can profile the StartUp project of your solution in Visual Studio. In addition, if you have the JetBrains ReSharper add-in installed on your Visual Studio, you can easily start profiling unit tests from the code editor.
  • Open a file from dotTrace in Visual Studio — if your solution is opened in Visual Studio, you can click a quick link in Source View to navigate to the corresponding source file in Visual Studio.

to the top

Command line options

You can profile applications, open snapshots and generate reports from any batch script by using the command line options provided with dotTrace.

to the top

Profiling API

Use advanced profiling scenarios by controlling profiling functions from within the application being profiled, with the help of our Profiling API.

to the top