You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Visual Studio debugger supports skipping source files during Step In operations by reading the non-user code filters from *.natjmc and *.natstepfilter files under C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers folder when Just My Code is enabled in VS settings. The debugger bundled with the VSCode extension comes with a similar folder, but there is no option to turn on the Just My Code option in the extension.
I am a member of the Visual C++ compiler team and I use VSCode as my primary editor/debugging experience with the C++ extension. Due to the fact that our project involves a lot of std::variant visitor code, not having support for JMC is a real productivity blocker. Is there a possibility of adding priority to this feature?
Reacted by Gerald Golka, Konstantin Kutsner, MBetters, modanashar, Jiang Bo, Nick, Andrew H. Cox and tonygould
It does not look like this is a priority issue which is a bummer because without JMC the debugging experience really sucks on those projects that are bigger than just simple "hello world" application.
Please vote on #5763 by adding a 👍 to help us prioritize our features.
Anyway, I voted. I am curious to know what threshold must be met for this to be prioritized. To Konstantin Kutsner (@kkutsner)'s point, debugging on any large project becomes clumsy rather quickly.
It looks like we may need a lot of votes: https://github.com/microsoft/vscode/issues/21839 (I pasted link as a code so this issue should not reference the other issue). That issue over 700 votes and still it is not on its way...
I'm curious, this extenstion has so many user installations, but it looks like no one really uses VSCode for debugging C++ code...
Konstantin Kutsner (@kkutsner) The vote count of the VS Code issue you referenced is not relevant, since it's managed by another team and they have a larger user base (all of VS Code instead of just C/C++ users). Our highest upvoted issue is #206 .
Lots of people use our extension for debugging C++. You can use Go to Definition and set a breakpoint in the definition you want to step into to get around the issue.
Konstantin Kutsner (@kkutsner) The vote count of the VS Code issue you referenced is not relevant, since it's managed by another team and they have a larger user base (all of VS Code instead of just C/C++ users). Our highest upvoted issue is #206 .
Fair point! Sorry for mentioning not quite relevant issue.
Lots of people use our extension for debugging C++. You can use Go to Definition and set a breakpoint in the definition you want to step into to get around the issue.
Yeah, that workaround may work sometimes, but such workaround is a productivity killer like Cameron DaCamara (@cdacamar) mentioned already. Let's consider a test code below:
I need to step through lines 46 to 52 and I want to step into line 49 for every element. In VisualStudio, I only need 4+n keyboard clicks to do that, where n is the number of elements in the vector. With "Go to Definition" workaround that is a lot more, even for such artifical code example. It is because every time I need to "Step Into" I may need to do "go to definition" then put a breakpoint (or "Run to Cursor" that sets temprorary breakpoint automatically). Also, I need to put a breakpoint after the statement before doing "Step Into" in the case something goes wrong and I did the previous breakpoint on a wrong line. After all I need to cleanup any of those breakpoints...Those extra actions take additional time and patience and that is adding up quickly.
For your sample code, can't you just set a breakpoint on line 49? Go to Definition isn't needed because the definition is on line 49.
I agree that doing the Go to Definition and setting the breakpoint (or doing multiple step in/outs) is annoying, although with debugging our code base I haven't found it a productivity killer enough to switch to VS debugging. I think the intent initially was for VS to be the "premier" debugging experience (paid/licensed product) so they didn't want to move too many debugging features into VS Code, but I don't know how much that reasoning applies to this particular issues versus other factors, such as team resources (I don't work on the debugger).
For your sample code, can't you just set a breakpoint on line 49? Go to Definition isn't needed because the definition is on line 49.
Yep, I can.
I think the intent initially was for VS to be the "premier" debugging experience (paid/licensed product) so they didn't want to move too many debugging features into VS Code, but I don't know how much that reasoning applies to this particular issues versus other factors, such as team resources (I don't work on the debugger).
Every dev on our team has paid VS licenses. But I found that a lot of my workflows I can do using VSCode much faster: it is keyboard centric, minimalistic, mostly runs much faster than VS....
For your sample code, can't you just set a breakpoint on line 49? Go to Definition isn't needed because the definition is on line 49.
I agree that doing the Go to Definition and setting the breakpoint (or doing multiple step in/outs) is annoying, although with debugging our code base I haven't found it a productivity killer enough to switch to VS debugging. I think the intent initially was for VS to be the "premier" debugging experience (paid/licensed product) so they didn't want to move too many debugging features into VS Code, but I don't know how much that reasoning applies to this particular issues versus other factors, such as team resources (I don't work on the debugger).
With smart pointers use everywhere, this is definitely a productivity killer!
There are trivial function calls everywhere.
Step on line 2 will go into : shared_ptr::operator->(), image::width(), shared_tr::operator->(), image::height(), Size::Size(int, int). And then into createNewImage.
With Visual Studio's *.natstepfilter. All this will not happen.
Reacted by Karl Schultz, IskandarMa, ChenLI00, Nick, everdrone, NicolasM-Forsk and Andrew H. Cox
I'm wondering if I should just switch to Visual Studio proper. Since vector-of-bool is not in charge of the extension anymore it seems its not really being developed anymore. My suspicion is also that VS Code is deprioritized to get people to move to Visual Studio.
maartennauta vector-of-bool worked on the CMake Tools extension -- our team is still developing that extension. This debugging issue is not related to the CMake Tools extension. Were you hitting some other issue?
Sean McManus (@sean-mcmanus) No, my mistake probably was to assume he also worked on the cpptools extension. It seems this is the issue im also hitting (just wanting to step through my own code in the project directory when debugging C++ in VS Code, ignoring std internals and boost libraries etc) and have voted accordingly. I guess a similar request applies to "stop on exception" where I would want to only stop on all exceptions in my own code, I dont know if that is a separate issue. I have not used Just-My-Code in Visual Studio in a while so I do not know if it provides that functionality for exceptions.
This is absolutely necessary. When debugging and stepping in/through my code I always end up stepping into a bunch of std code. It would be great to just step through and not have worry about code other than my own when debugging an issue
Please react to the top post with a +1 to vote on this feature.
How many votes do we need? This is such a productivity killer, I'm really surprised this isn't prioritized. The workaround works for simple cases, but C++ has a ton of hidden function calls everywhere so it's really annoying.
Reacted by Hristo Hristov, Andrew H. Cox and Zoltán Majoros
If I add "justMyCode": true to the lauch.json, it shows me a warning, that justMyCode is not allowed, but it actually works with cppvsdbg.
Maybe not finalized yet, since if I step into the function it does nothing, I have to press F11 many times until it skips all external calls.
This feature would be incredibly helpful for C++ debugging in VSCode. It would be great if the dev team considered implementing it - skipping over standard library files would make the debugging process much less frustrating as we wouldn't have to manually step out each time a standard library function runs. Thanks for considering!
Activity
cdacamar commentedon Dec 16, 2020
Hi,
I am a member of the Visual C++ compiler team and I use VSCode as my primary editor/debugging experience with the C++ extension. Due to the fact that our project involves a lot of
std::variantvisitor code, not having support for JMC is a real productivity blocker. Is there a possibility of adding priority to this feature?kkutsner commentedon Feb 26, 2021
It does not look like this is a priority issue which is a bummer because without JMC the debugging experience really sucks on those projects that are bigger than just simple "hello world" application.
Andrew Wang (@WardenGnaw) Is this just a matter of getting more people to vote on this issue?
BradyDonovan commentedon Mar 1, 2021
Konstantin Kutsner (@kkutsner)
Yes, that appears. Andrew Wang (@WardenGnaw) mentioned this here:
#6668 (comment)
Anyway, I voted. I am curious to know what threshold must be met for this to be prioritized. To Konstantin Kutsner (@kkutsner)'s point, debugging on any large project becomes clumsy rather quickly.
kkutsner commentedon Mar 1, 2021
BradyDonovan
It looks like we may need a lot of votes:
https://github.com/microsoft/vscode/issues/21839(I pasted link as a code so this issue should not reference the other issue). That issue over 700 votes and still it is not on its way...I'm curious, this extenstion has so many user installations, but it looks like no one really uses VSCode for debugging C++ code...
sean-mcmanus commentedon Mar 1, 2021
Konstantin Kutsner (@kkutsner) The vote count of the VS Code issue you referenced is not relevant, since it's managed by another team and they have a larger user base (all of VS Code instead of just C/C++ users). Our highest upvoted issue is #206 .
Lots of people use our extension for debugging C++. You can use Go to Definition and set a breakpoint in the definition you want to step into to get around the issue.
kkutsner commentedon Mar 1, 2021
Sean McManus (@sean-mcmanus)
Fair point! Sorry for mentioning not quite relevant issue.
Yeah, that workaround may work sometimes, but such workaround is a productivity killer like Cameron DaCamara (@cdacamar) mentioned already. Let's consider a test code below:

I need to step through lines 46 to 52 and I want to step into line 49 for every element. In VisualStudio, I only need 4+n keyboard clicks to do that, where n is the number of elements in the vector. With "Go to Definition" workaround that is a lot more, even for such artifical code example. It is because every time I need to "Step Into" I may need to do "go to definition" then put a breakpoint (or "Run to Cursor" that sets temprorary breakpoint automatically). Also, I need to put a breakpoint after the statement before doing "Step Into" in the case something goes wrong and I did the previous breakpoint on a wrong line. After all I need to cleanup any of those breakpoints...Those extra actions take additional time and patience and that is adding up quickly.
sean-mcmanus commentedon Mar 2, 2021
For your sample code, can't you just set a breakpoint on line 49? Go to Definition isn't needed because the definition is on line 49.
I agree that doing the Go to Definition and setting the breakpoint (or doing multiple step in/outs) is annoying, although with debugging our code base I haven't found it a productivity killer enough to switch to VS debugging. I think the intent initially was for VS to be the "premier" debugging experience (paid/licensed product) so they didn't want to move too many debugging features into VS Code, but I don't know how much that reasoning applies to this particular issues versus other factors, such as team resources (I don't work on the debugger).
kkutsner commentedon Mar 2, 2021
Yep, I can.
Every dev on our team has paid VS licenses. But I found that a lot of my workflows I can do using VSCode much faster: it is keyboard centric, minimalistic, mostly runs much faster than VS....
Interestingly, that Microsoft is releasing a standalone debugger application https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-windbg-preview that has even more features that VS can provide as a debugging experience, for example, use JS scripting to to script the debugger - mind blowing (Something similar that GDB also can do using Python for a while)!
kingsimba commentedon Apr 3, 2021
With smart pointers use everywhere, this is definitely a productivity killer!
There are trivial function calls everywhere.
Step on line 2 will go into :
shared_ptr::operator->(),image::width(),shared_tr::operator->(),image::height(),Size::Size(int, int). And then into createNewImage.With Visual Studio's
*.natstepfilter. All this will not happen.maartennauta commentedon Oct 6, 2022
I'm wondering if I should just switch to Visual Studio proper. Since vector-of-bool is not in charge of the extension anymore it seems its not really being developed anymore. My suspicion is also that VS Code is deprioritized to get people to move to Visual Studio.
sean-mcmanus commentedon Oct 6, 2022
maartennauta vector-of-bool worked on the CMake Tools extension -- our team is still developing that extension. This debugging issue is not related to the CMake Tools extension. Were you hitting some other issue?
maartennauta commentedon Oct 6, 2022
Sean McManus (@sean-mcmanus) No, my mistake probably was to assume he also worked on the cpptools extension. It seems this is the issue im also hitting (just wanting to step through my own code in the project directory when debugging C++ in VS Code, ignoring std internals and boost libraries etc) and have voted accordingly. I guess a similar request applies to "stop on exception" where I would want to only stop on all exceptions in my own code, I dont know if that is a separate issue. I have not used Just-My-Code in Visual Studio in a while so I do not know if it provides that functionality for exceptions.
Rhahkeem commentedon Oct 8, 2022
This is absolutely necessary. When debugging and stepping in/through my code I always end up stepping into a bunch of
stdcode. It would be great to just step through and not have worry about code other than my own when debugging an issue10 remaining items
quyykk commentedon Jan 5, 2023
How many votes do we need? This is such a productivity killer, I'm really surprised this isn't prioritized. The workaround works for simple cases, but C++ has a ton of hidden function calls everywhere so it's really annoying.
sean-mcmanus commentedon Jan 5, 2023
Nick (@quyykk) I don't know exactly how many votes are needed, but more than 100 would help (there are 2 other debugger features with more up votes).
ChenLI00 commentedon Jul 5, 2023
There are now 101 tickets available. Will this feature be added?
jing-pei commentedon Aug 25, 2023
Is there an alternative solution?
lowmee commentedon Sep 1, 2023
This is a practical feature, please add it
Zingam commentedon Sep 8, 2023
Voted: +1, closing: #11417
Zingam commentedon Sep 8, 2023
Debugging doesn't seem to be getting much attention.
There are a few outstanding issues:
rootcyraid commentedon Jan 4, 2024
I voted too. Andrew Wang (@WardenGnaw) How many more votes are needed? It's currently at 122, seems pretty substantial at this point. :)
tonyriviere88 commentedon Apr 30, 2024
Upvoted too. This is a must have feature.
ahcox commentedon May 21, 2024
Is there at least a janky sometimes-working proof of concept extension that does this to install?
csorvagep commentedon Jul 10, 2024
If I add "justMyCode": true to the lauch.json, it shows me a warning, that justMyCode is not allowed, but it actually works with cppvsdbg.
Maybe not finalized yet, since if I step into the function it does nothing, I have to press F11 many times until it skips all external calls.
mrx23dot commentedon Jul 11, 2024
For gdb see suggested solution at the end #3725
StephenApptronik commentedon Feb 13, 2025
As a workaround, once the debugger is attached, I can execute this command in the debugger:
-exec skip -gfile /usr/include/c++/11/bits/*.hI figured out that I can get that to be automatically added if I put it into launch.json like this:
arcanelab commentedon Apr 17, 2025
This feature would be incredibly helpful for C++ debugging in VSCode. It would be great if the dev team considered implementing it - skipping over standard library files would make the debugging process much less frustrating as we wouldn't have to manually step out each time a standard library function runs. Thanks for considering!