top | item 17435287

C++ Just My Code Stepping in Visual Studio

131 points| jjuhl | 7 years ago |blogs.msdn.microsoft.com | reply

38 comments

order
[+] waynecochran|7 years ago|reply
Great. Now if they can actually fix the debugger to lock onto a single thread when stepping thru multithreaded code. Currently when you set a breakpoint and step, you’ll be jarringly switched back to the breakpoint when another thread hits it. The solutions now are tedious : https://visualstudio.uservoice.com/forums/121579-visual-stud...
[+] 1_player|7 years ago|reply
The problem is that the normal implementation of a breakpoint/step is replace a single byte with a 0xCC opcode (INT 3), which will be hit by every thread. Making it lock onto a single thread would require a conditional breakpoint, checking the thread ID every time that code path is executed, which might potentially use a lot of CPU. I'm not sure that kind of conditional breakpoint has hardware support.

It's definitely possible to implement, but not as easy as using a regular INT 3 instruction.

[+] neverfone|7 years ago|reply
Not a windows user, but the same applies to gdb. What is your proposal? If you're currently debugging a thread, breakpoints are disabled for other threads? That really doesn't seem like what people would expect by default.
[+] maxxxxx|7 years ago|reply
Agreed. That's a real nuisance.
[+] a-dub|7 years ago|reply
It would be pretty funny if they extended it to "just my uncommitted changes." ie: I want to step through every line I have written, but skip everything else...
[+] scraft|7 years ago|reply
It is funny how long this has been an issue and how I and so many people have given up stepping in and instead jump to the actual user function, set break point, and then step over at the source location, then unset the breakpoint and continue. A bunch of crazy steps which you end up doing again and again.

Needless to say, this improvement is much welcomed!

[+] Dinux|7 years ago|reply
Visual Studio even created the "Jump to here" option to do just this, but I agree this is how we all did it for a long time.
[+] Dinux|7 years ago|reply
As a developer spending hours a day in Visual Studio with C++ as primary language this is a major improvement in terms of development time. Debugging is a a time consuming task in any language, but library headers from STD and Boost slow down the process tremendously.
[+] johnboyer|7 years ago|reply
Although it does help, I would say its only a bit faster than actually just setting a breakpoint of where you want the code to stop, and running till then, unlike Microsoft's example which shows 85 step intos, as if people actually do that.
[+] spoiler|7 years ago|reply
I love this idea. I wonder if something similar could be ported/achieved for JavaScript!
[+] chris_wot|7 years ago|reply
I would love to know the best Linux/OS X GUI debugger... and can it do this?
[+] neverfone|7 years ago|reply
I don't know if there are any good Linux GUI debuggers, but gdb is a comprehensive debugger and can do something similar with the skip command.

Any gui debugger for Linux is probably a frontend to gdb, so as long as it lets you passthrough commands to gdb it can do this.

[+] pjmlp|7 years ago|reply
I think DDD is still one of the best ones around given the display of data structures, even if the UI could get a facelift.
[+] TylerGlaiel|7 years ago|reply
Why does this require a special compiler switch? Can't the IDE just auto-step until it gets back to your own file of code?
[+] w_t_payne|7 years ago|reply
Why has it taken this long for something so obvious to be implemented?
[+] merinowool|7 years ago|reply
So that people with VS2015 would have to buy new version...
[+] anilgulecha|7 years ago|reply
Just a clarifying note : this is the closed Visual Studio, and not free software - VS Code - which usually does the rounds on HN.

I'm far more excited about the LSP protocol for C++ which would bring like this to all IDEs.

[+] Rusky|7 years ago|reply
I don't think the LSP includes any debugging support?