I was at TechEd2009 a few weeks ago and I was so sad we weren’t able to talk more about VS2010 there as much as we wanted to. One of my highlights of the conference was standing in the lunch line while a group of folks from a variety of different companies discussed the new historical debugger work we are doing in VS2010. They were clearly excited and had a bunch of questions so I introduced myself as the Development manager for the team that worked on that and we sat and had lunch. Although there is clearly more we can do in this area than we will be able to ship in VS2010, it was clear these folks were looking forward to picking up the Beta. Of course at that time, the Beta was slowly cooking, but now it’s ready, and we can have a good conversation. The team I’m responsible for worked on bringing this pipeline of value and innovation in VS2010:
NEW FEATURE AREA Historical Debugger
- Explore important diagnostic events that happened in your application every time you press F5. Think of this as having things like Procmon/Filemon/Regmon and Fiddler integrated directly into your debugging experience! Except we do ones like exceptions and events specific to the libraries you are using like WinForms, Webforms, WPF etc.
- Go back to previous break states in the debug history. Ever written a value from the autos window or locals window down on a post-it and continued on debugging? Now just go back to the point you stopped at and see the value.
- Turn the historical debugger dial to high and see a history of the code execution, the method calls, the object states and call sites in the tree view of the Debug History window. Walk back to those points in time and understand what happened.
- Open logs of both diagnostic events and application recording created from running the new Visual Studio Test tools so you can figure out why test are opening this issue on you when clearly - “It works on my machine”.
NEW FEATURE AREA Test Impact Analysis
- Understand which tests to run to verify the changes you are making, as opposed to running every test.
- Understand the specific methods changed that are causing the requirement to run a specific test.
- Ask the question – if I changed this method – what tests would need to be run to verify it?
- New: Tear off your datatips and leave them floating on the page while you debug. No need to go and hover over things time and again.
- New: WPF visualizer. Inspect the state of visual elements in WPF applications. No need to hunt down the specific property you have set based on which base class it is set in, use the filter mechanism in the visualizer to find it. See the rendered visual of the element in the preview pane.
- New: WPF logging. Track issues such as WPF DataBinding rather than asking “Why is may control/window black”
- New: minidump summary page. Use File->Open to open a minidump and see the data about the environment and modules that were present in the minidump. Search for your module in the list.
- New: Managed minidumps. Create minidumps for managed code running on the v4.0 runtime. Open those minidumps in Visual Studio and explore them.
- New: Thread window. A whole new thread window designed to help you find the important threads and figure out what they are doing. Show threads from all the processes you are debugging. Show the callstacks for all of those threads in the threads window itself. Group them by flagging them. Filter threads to only threads that have a particular pattern in their stack.
- New: Export your breakpoints. Tag and filter them in the breakpoints window. Export and give to a co-worker to let them import them and figure out a bug in some code you know
- New: Support for tasks in the task libraries as first class citizens
- New: New parallel stacks window shows the stacks of your application in a graphical format
- Improved: Support for opening executables as a project and using that as the debug target
- Improved: Support for inter-op debugging of x64 processes.
- Improved: C++ – support strcmp/strncmp in conditional breakpoint expressions
- New: Tier interaction profiling. Understand the cost of the calls to the database from your mid-tier. See the SQL queries that make up those costs.
- New: Performance rules. Get guidance on common performance issues that the profiler spots in the performance results.
- New: Thread contention profiling. Understand which resources your threads are most contending on. See the contention pattern between threads fighting over locks, and drill down directly to the line of code trying to acquire the resource.
- New: Parallel performance analyzer. Understand core utilization and how parallel your app is and could be.
- Improved: Directly attach to managed CLR 4.0 applications without pre-setting environment variables.
- New: Profiler works on VPC, Hyper-V and VMWare
- New: Just my code support.
- New and improved: Integration with LoadTest. Switch on the profiler in the test settings for the load test. Open the load test result after the test and click on the profiler results icon in the tool bar. Drill right down to the code hotspots for your code under load.
- Improved: Summary page shows CPU usage charts and hot stacks rather than just methods. An action link pane provides support for “one click to action”.
- New: Function details page. Understand graphically how time is being spent in this method, and the children of that method. Visualize the source code and show the hot lines line by line with performance statistics visualized in the code at the line level.
- Improved: Support for code coverage on 64bit code under test.
Whew! That should keep my blog full for a few months anyway!
Please pull down the Beta and give it a spin. It’s available from the product page here:
So far I have been running Beta1 and VSTS2008SP1 Side by Side with no issues. We spent a lot of time in this release focusing on setup, side by side and uninstall so I do think this is way better than in previous releases.
Fix those bugs, and stay posted for more deep dives in all of these areas. Sorry I didn’t drill deeper, but I wanted to get this post out today.