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.
- Async Debugging: You can see how you landed in an async continuation through the enhanced Call Stack window, and also all async operations that are in flight through the Tasks window. We have a dedicated channel9 video recording focused on async debugging. This support is there for C++, JavaScript, and .NET languages. While it requires that you install VS2013 on Windows 8.1, it works across all project/app types from Windows Store apps, to desktop/server apps, to ASP.NET web apps.
- 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++.
- Just My Code for JavaScript: Same preamble as the bullet above :-). To learn how JavaScript developers can also enjoy this Just My Code power please read the blog post describing JMC support for JavaScript.
- JavaScript and C++ interop debugging: Interop debugging (aka mixed or hybrid) between more than one language is a capability you have been enjoying in Visual Studio for your C++ and .NET code, and now you can enjoy interop debugging between your Native and JavaScript code.
- 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.
- “No refresh” attach for JavaScript: No blog post on this, suffice to say that you can now attach the debugger to running JavaScript code and debug away without having to first enable the script debugger! Behind the scenes, the Visual Studio debugger puts the JavaScript runtime into interpreted mode, which allows it to be attached.
- 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
- JavaScript Memory tool
- CPU Sampling tool (existed previously, now launchable from the hub)
- JavaScript Function timing tool (existed previously, now launchable from the hub)
- Performance Wizard (existed previously, now launchable from the hub)
//build/ talks
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:
- We had a dedicated session on Diagnosing Issues in JavaScript Windows Store Apps
- 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
- …and another session for JavaScript developers on Developing High Performance Websites and Modern Apps with JavaScript Performance Tools
In Closing
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…
0 comments