Debugging and diagnostics enhancements in Visual Studio 2015

Cross-platform debugging support

You can use Visual Studio to create and debug native mobile apps that run on Windows, iOS, and Android devices. Use the Microsoft Emulator for Android, or connect a device and debug your code directly in Visual Studio.

Debugger-integrated diagnostics tools

Use the debugger Diagnostic Tools window to collect and analyze performance and diagnostics data while you are debugging.

PerfTips and performance diagnostics

Monitor performance as you debug

When you run between breakpoints or step through your code in the debugger, PerfTips show you the elapsed time between the current breakpoint and the break that occurred last.

PerfTips in the debugger window

The time is presented as a tool tip to the right of the line that you are stopped at. PerfTips provide quick and continuous feedback on the performance of your app during development without requiring a separate profiling run. See Analyze performance in the debugger

The PerfTips: Performance Information at-a-glance while Debugging with Visual Studio blog post from the Visual Studio Platform diagnostics team gives you the details and a walkthrough.

Memory diagnostics

The debugger-integrated Memory Use tool helps you analyze memory issues in your apps.

Network diagnostics

The Network diagnostics tool collects HTTP traffic data for .NET Windows 10 apps that help you analyze performance and correctness issues.

XAML diagnostics

The Timeline diagnostics tool helps you analyze XAML performance issues

Configuring breakpoints

Break only when and where you want

The new breakpoints configuration window makes it easy to customize breakpoint behavior by specifying conditions and actions.

Advanced breakpoint configuration window

Conditions specify boolean properties that must be true for the debugger to break at a selected line.

  • Conditional statements break only when conditions you specify are met. Think of this as adding an “if” statement to your code and placing the breakpoint inside the “if” statement so it is only hit when the conditions you entered are true.

  • Hit counts break only after the breakpoint has been hit a certain number of times. These are useful in situations where code is called multiple times, and you either know the exactly when it is failing, or have a general idea that “it fails after at least” a certain number of times.

  • Filters break when the breakpoint is hit on a specific thread, process, or machine and are useful for debugging code running in parallel.

Actions specify the behavior of the breakpoint when the breakpoint is hit or the breakpoint condition is true.

  • Tracepoints print a message to the output window and are capable of automatically resuming execution. These are useful for doing temporary logging when you need to trace something and don’t want to have to break and manually track values.

The New Breakpoint Configuration Experience in Visual Studio blog post from the Visual Studio debugger team is an in-depth look at using advanced breakpoints.

Lambda expressions in Watch windows

Debug and test lambda expressions in Watch windows

When you're debugging Visual Basic and C# projects, you can now enter lambda expressions in Watch windows.

Support for Debugging Lamba Expressions with Visual Studio 2015 is the debugger team's blog post.

C++ debugging enhancements

  • Improved startup performance on F5. When a C++ debugger launches a process, the Windows debug heap is disabled and the normal heap is used instead. This results in a faster start for debugging.

  • Reduced chance of deadlocks when evaluating functions. If the C++ debugger is stopped at a breakpoint and your app has acquired a lock, the C++ debugger will "slip" execution of threads in the app in order to evaluate an expression in the Immediate or a Watch window.

C++ Debugging Improvements in Visual Studio "14" on the MSDN Visual C++ Team Blog describes the technical details behind these improvements.

Remote tools

The Visual Studio Remote Tools lets you run, debug, and test an application that is running on one computer from another computer that is running Visual Studio. Install the remote tools on the remote computer from the Visual Studio Downloads page.