Today I downloaded the latest VS bits and played around with the native debugger. It was a brief session and so would be the records of my impressions.
J Universal CRT is here!
And seems like a great idea.
A lot of cheese was moved around in the process, and it would probably take me a while to know my way around again. As a prominent example, dbgint.h is now replaced by debug_heap.cpp – which is a borderline-breaking change: dbgint.h was kind-of-documented (although wrapped in disclaimers and admittedly an internal implementation detail), and real code came tumbling down. What’s worse, the type declarations that were available in dbgint.h are now hidden in debug_heap.cpp – which includes many un-published internal headers – and tool writers would probably have no choice but to cut and paste the type declarations and hope for the best.
I’m not entirely sure this breaking change (and others like it) are by design. One can still hope the final bits would see this fixed. What’s much worse –
L Published MS symbols are all stripped
Which means you can’t step through CRT/MFC sources. This is a major setback in productivity, and I hope only a temporary one.
J Context operator replaced
The context operator (‘{,,dll}symbol’) while being mighty useful at debug time, was broken beyond repair – and as I hoped in 2009 is replaced by the windbg-like ‘!’ operator:
However, as apparent in the screenshot:
L Context operator no longer deduces type
… and explicit casts are in order where they previously weren’t. That might seem like a quibble but this in fact prevents some very useful hacks previously available, notably checking memory integrity from the debugger:
The closest I currently have to a workaround is to capture the function to a variable in code, and invoke it from the watch window:
J Micro Profiling!
After you step past a code line in the debugger, a neat little tooltip appears:
Even in disassembly!
J Wide-register watch
‘xmm0il’ now works in x64 also.
BTW, the default platform is now ‘x86’ and ‘Win32’ is addable as a separate configuration from the config manager. Not sure why and what is the difference.
L Auto-vectorization
It seems little progress was made in auto vectorization – AFAICT all previous reports still hold.