Quickly find bugs

Debug cross-language
Rich debugging for all your code
Quickly view information about your variables in the editor while debugging. Use Data tips to see the name and current value of a variable, to expand an object and see its elements, and to edit the value of a variable.
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.


Fine-grained control
Decide exactly where and when you want to break and examine state
Use breakpoints to pause your running program where you suspect there is a bug. Inspect each line of code in detail, looking at the values of variables, memory behavior, or whether a branch of code is running.
Go ahead, take things to the next level and configure flexible conditions and actions for your breakpoints.
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.


Exceptions are good
Get alerted when things go wrong
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 immediately with inner exception information and null reference analysis right from there, as easy as if you had hit a breakpoint.
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.


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.
Prevent performance 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’re 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.


No more “no repro”
Code execution history for .NET code
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.
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.

Free, fully-featured IDE for students, open-source and individual
developers
Professional developer tools, services, and subscription benefits for small
teams
End-to-end solution to meet demanding quality and scale needs of teams of all
sizes