Hi VS Code dev here :wave:
Last milestone we have introduced a Start View for debugging. More about this can be found here https://github.com/microsoft/vscode/issues/84677
So when the user has no launch.json file this view should help him start debugging.
This view is currently language agnostic and not very cluttered thus we are slowly looking in opening it up to extensions. We have two options:
1) Allow extensions to contribute commands / text to the current view. Those commands would be rendered as additional blue buttons or as some menu
2) Allow extensions to contribute a whole view which would be below the start view. The C++ extension could choose what to render in that view and it would give a bit more control to the extension. Using context keys this view would only be visible in the "start" experience
What I would be interested in is what C++ would like to contribute to improve the start experience. If it is only commands, than I think it makes sense to show those commands in the start view (for example with additional blue buttons). If it is much more then it makes more sense that C++ contributes the whole view.
What are the biggest pain points that C++ users hit when setting up debugging?
Related python discussion: https://github.com/microsoft/vscode-python/issues/9268
Let me know what you think and how you envision the C++ debug start experience.
Thanks!
Current look of debug start view
fyi @WardenGnaw

This is a problem. It costs me a lot of time and exhausted entheusiasm.
Warning:
{
"resource": "vscode/c_cpp_properties.json",
"owner": "_generated_diagnostic_collection_name_#0",
"code": "768",
"severity": 4,
"message": "Unable to load schema from 'cpptools-schema:/c_cpp_properties.schema.json': Request vscode/content failed with message: cannot open cpptools-schema:/c_cpp_properties.schema.json. Detail: resource is not available.",
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 2
}
Biggest issues I see are:
Great, thanks for providing those.
And how could we potenitaly help users solve those issues? Is a button like "Set debugger" good enough for the first one, or would you require something much more elaborate? Any ideas?
I reviewed your github issue and PR and it looks like your goal is to provide "one button" or some simple way to get running/debugging. I think having a Set Debugger would be good.
Is the goal to have this for simple single file projects? Is the goal here for more complex projects to start from a state where compilation is done already? If so, the user would also need an option to select an executable.
The goal of this view is currently to be shown when the user has no launch.json - so it intended for beginner users who have issues with seting up debugging.
As for the selecting an executable, could that be done as part of the C++ start action. You could ask the user via quick pick and depending on the answer fill in the launch.json on the fly?
As for the selecting an executable, could that be done as part of the C++ start action. You could ask the user via quick pick and depending on the answer fill in the launch.json on the fly?
We have been tossing that idea around.
For this scenario, do we want Run and Debug to do the same as Build and Debug Active File?
We already show this dropdown for that:

If users do not know how to customize launch.json they probably just want F5 to automatically build and debug a simple app (e.g. a Hello World program) which is similar to the Build and Debug Active File
@WardenGnaw agree that users would want F5 to just work. Which is automatically build and debug.
So the best experience would be if the C++ is creating a launch configuraiton on the fly that it also fils in the preLaunchTaks so the active file gets built. is that doable? Or would you need a special command for this? If you want a seperate button than we would need to contribut another button which imho is not the ideal experience.
@isidorn I was testing out the debug start experience window, but my message does not appear if I provide a when clause for c or cpp.
E.g.
"viewsWelcome": [
{
"view": "debug",
"contents": "Sample Start Debug Message",
"when": "debugStartLanguage == cpp || debugStartLanguage == c"
}
],
This is my active view

@WardenGnaw what you are doing looks good.
My best bet would be that your debugger is not specifiying that it is interested in .cpp files.
Here's an example how python is doing it https://github.com/microsoft/vscode-python/blob/master/package.json#L1189
That was exactly the issue!
@isidorn As always, thank you for helping out. :)