Visual Studio 2013 Diagnostics Investments
this post, and the posts it links to have been updated for VS 2013 RTM – enjoy!
Hi, I am Daniel Moth, a Program Manager in Visual Studio. I don’t know about you, but I usually spend more time (and more fun time in fact!) in the debugger than I do in actually constructing my app. Perhaps that is the reason I also work on the Visual Studio Diagnostics team, which is responsible for the debugger, the profiling tools, code analysis/metrics, and IntelliTrace.
On all the teams I have worked on in my career across a number of companies, the developer on the team that every other member of the team looks up to, is the person who is a wizard in root causing hard to find issues. Beyond having that natural diagnostic talent and also typically more professional experience, the other characteristic of a diagnostic wizard is deep knowledge of the diagnostic tools. It never ceases to amaze me how many developers spend time learning new APIs, but do not invest time in learning what is new on the diagnostic tooling front. Of course you dear reader are reading this post, so that puts you immediately in the other camp of developers who do want to advance their knowledge on the diagnostic tooling front, and I am here to help you with pointers in this blog post. Specifically, I will share with you links to other blog posts and videos on new diagnostics features in Visual Studio 2013.
So you need only bookmark this blog post and come back to it as an index to all the other places that describe in more detail each new capability.
New diagnostics features and their blog posts
Without further ado, here is the list of my favorite diagnostics features in Visual Studio 2013 and be sure to follow the links to the detailed descriptions some of which include screenshots, walkthroughs, etc
- .NET memory dump analysis: For those of you trying to investigate memory issues on your production servers, you will love our new support for analyzing .NET memory dumps.
- Just My Code for C++: .NET developers have been enjoying in the debugger the JMC feature for a long time. JMC hides code that is not classified as code that you wrote, allowing you to focus on debugging just your code. You can still show external code through a right click on the Call Stack window. To learn how C++ developers can also enjoy this Just My Code power please read the blog post describing JMC support for C++.
- Support for 64-bit Edit and Continue for .NET: A top customer request for a long time, we are finally able to deliver this to you as announced in the dedicated blog post on 64-bit EnC support.
- Return Values in the Autos window for .NET apps: Also a top customer ask, and a feature that brings parity with the C++ experience, learn how you can now see function return values in the Autos window.
- Enhancements to Code Analysis: .NET and C++ developers can now enjoy better filtering, sorting, and categorization in the Static Code Analysis window.
- Better error reporting for WinRT C++ apps: If you are building Windows Store apps in C++, you will appreciate the improved WinRT exception reporting.
- Improvements to natvis for C++ code: C++ developers should also be happier with more customization options for native visualization files.
- Deeper profiling insight into compiler optimizations for C++ developers: If you are a C++ developer you definitely want to read this deep dive walkthrough on how to get insight into what functions got inlined and other effects of the Profile Guide Optimization (PGO) process through the CPU Sampling profiler.
- C++ AMP GPU debugging improvements: C++ AMP developers programming the GPU enjoyed a superb GPU debugging experience with VS2012 on Windows 8, and with VS2013 they can now enjoy that side by side with CPU debugging, and it is also supported on Windows 7.
- Search support in the Modules window: Like the blog post says “sometimes for some people it is the little things that please” so if that describes you then go ahead and read about this small Modules window enhancement.
- Open dumps taken by Task Manager regardless of bitness: If you ever been frustrated when trying to open a dump of your 32bit app that a customer took on a 64bit machine (e.g. through the Task Manager), you’ll be pleased to know that you can now actually open 64-bit Dumps of 32-bit Processes in Visual Studio 2013.
Special mention: Performance and Diagnostics hub
Beyond the list above, I feel an extra special mention is needed for an investment we have made across multiple Visual Studio teams to bring you the truly awesome Performance and Diagnostics hub (watch the channel9 overview video). I strongly encourage you to first read the overview post and then the dedicated blog posts to each new (and not so new) tool in the hub:
- Performance and Diagnostics hub.
- Energy Consumption tool
- XAML UI Responsiveness tool
- HTML UI Responsiveness tool
- CPU Sampling tool (existed previously, now launchable from the hub)
- Performance Wizard (existed previously, now launchable from the hub)
Beyond the links to blog posts above (and the two channel9 videos), you may also want to see in action some of these capabilities at the recorded sessions at Build. Here are the sessions I recommend you watch for that purpose:
- Also a dedicated session for both C++ and .NET devs on Diagnostics Tools for XAML-Based Windows Store Apps
- …the remaining C++ diagnostics features were covered as part of the overview What’s New for C++ Developers session
- …some of the remaining .NET diagnostic features were covered as part of the overview What’s New in .NET Development session
Phew! That was a lot of links to a lot of new diagnostics features in VS2013, which remember came only a year after VS2012 itself also representing a significant investment for tooling the brand new platform for Windows Store apps from a diagnostic perspective.
If you have feedback for any of these I strongly encourage you to leave a comment on one of the links I shared above where their respective authors can respond to you, or you can engage in our MSDN diagnostics forum, and we are always monitoring uservoice. Until next time…