Debugging in Visual Studio

Debug, Profile, and Diagnose

Quickly find bugs in your code.

  • World-class debugger and profilers
  • Debug code written in any VS-supported programming language or technology
  • Debug locally, remotely, on devices, with emulators, the cloud, and in production
  • Diagnose performance issues without leaving the familiar debugger workflow
  • Spend less time hunting bugs, with IntelliTrace historical debugging
  • Debug and inspect your XAML or HTML UI layer while your app is running
1  2  3  46  78  9  10   5   ggg

Debug cross-language

Rich debugging for all your code

Visual Studio provides an excellent debugging experience no matter what language you use – from C#/VB and C++, to JavaScript and Python, to XAML and HTML, all supported languages have debugging support.

If your app mixes languages you can also interop-debug across the language boundary with mixed-mode debugging.

Call Stack

Any platform or place

Locally, remotely, and in production

Anywhere your code runs, Visual Studio can debug it – from launching a local Windows app on the desktop or in the Android emulator, to attaching a remote Azure instance, iOS device, or gaming console; or to any web browser.

You can debug issues offline in your production environment using capabilities such as IntelliTrace and deep analysis of dump files.

Visual Studio Emulator for Android

Fine-grained control

Decide exactly where and when you want to break and examine state

The Visual Studio debugger lets you control execution, that is, decide exactly where you want to pause all the threads in the process, and inspect state at that point. You can Break All at any time, Step Over statements, Step Into and Out of functions, Run To Cursor, Edit and Continue, and everybody’s favorite, set Breakpoints.

Go ahead, take things to the next level and configure flexible conditions and actions for your breakpoints.

Breakpoint Settings

Flexibly inspect state

See values of variables at runtime

Once you pause the application where you want it, Visual Studio offers many ways for you to inspect the value of your variables, to form or verify a hypothesis.

Monitor a value while stepping through your code; glance at local variables, and evaluate complex expressions – all without leaving the debugger. You can even interactively query deep into a data structure.

DataTip, Locals, Autos, Watch, Immediate

Exceptions are good

Get alerted when things go wrong

Code defects and unexpected situations manifest themselves as exceptions. Exceptions will crash your app or simply become hard bugs to track down.

While debugging with Visual Studio you can configure notifications when exceptions are thrown, and even choose specific exceptions of interest to focus on. You get alerted and from there, it is as easy as if you had hit a breakpoint.

Exceptions, Output

Threading made easy

Simplify control and inspection of complex multi-threaded code

Multi-threaded code is notoriously tough to debug. Visual Studio lets you control the execution of multiple threads at once and inspect state across many threads to make the big picture pop.

See all the thread call stacks in a single graphical view and evaluate expressions across multiple threads to compare values. Easily view information about threads and tasks, flag them, and freeze them. Quickly switch between execution contexts, and use thread markers to see which lines of code your threads are executing at any moment.

Parallel Stacks, Tasks, Threads, Parallel Watch

Close to the metal…

Dig as deep as your code requires

Sometimes, especially for system- level C++ code, you need to drop closer to the hardware level to diagnose hard to find bugs. Visual Studio supports you to get this done with the Memory, Registers, and disassembly window.

Disassembly, Modules, Registers, Memory

Prevent perf issues

Make your app fast and robust

Get information to help you make good performance choices as you code. Use in-editor PerfTips and diagnostics tools to understand the performance and memory characteristics of your code while you are debugging.

Use comprehensive profiling tools without the debugger to get deeper insights into your app’s performance, including CPU, GPU, and memory usage, UI responsiveness, and network utilization.

Diagnostic Tools, CPU Usage, Memory Usage

No more “no repro”

Code execution history for .NET code

As you edit and F5 to test your .NET code, you encounter an unexpected behavior, a bug. Diagnosing that bug can sometimes take hours of searching through source code to find the relevant pieces of code and repeated guesses of where to set a breakpoint.

With Visual Studio diagnostic tools and IntelliTrace you can see the history of your code’s execution and navigate back to inspect state without breakpoints.

IntelliTrace

Simple UI debugging

XAML and HTML are code too

You can get the app to look the way you want while it is running – no more relying on design time data to verify your layout.

For apps with an HTML or XAML user interface, identify issues in your UI layer by using code debugging features. Visual Studio also allows you to explore the HTML DOM and visualize the structure of XAML code using the XAML Visual Tree while your app is running.

XAML Visual Tree

Related

What is Visual Studio Online?

Cloud services for development teams to collaborate and manage software projects.

Read more

Get Visual Studio Community 2015

  • Fully-featured integrated development environment
  • Ecosystem with thousands of extensions
  • Windows, iOS, and Android app development*
  • Web and cloud development
  • Multi-language support includes C#, C++, JavaScript, Python, and more
  • FREE for individual developers
  • FREE for open source projects, academic research, education and

*Free Microsoft extensions available for download for iOS and Android development