Open richard-lemurian opened 3 months ago
Thanks for the feature request! We are going to give the community 60 days to provide 7 👍 upvotes on the opening comment to gauge general interest in this idea. If there's enough upvotes then we will consider this feature request in our future planning. If there's unfortunately not enough upvotes then we will close this issue.
Thanks for the feature request! We are going to give the community 60 days to provide 7 👍 upvotes on the opening comment to gauge general interest in this idea. If there's enough upvotes then we will consider this feature request in our future planning. If there's unfortunately not enough upvotes then we will close this issue.
Thanks for letting me know.
Mixed C++ and Python debugging is an urgent need for me. In particular, I need to be able from a bit of python code step-into a function in C/C++ code whose definition I do not know and thus cannot set a breakpoint there in advance.
I would be really nice if there was a way to debug a program written in both python and C++ (with the python code calling into the C++), such that, at the points where the Python code calls into the C++, one could step into the C++ code.
I have found that the following works:
It turns out, that you can configure vscode to debug both the python code and the C/C++ code in a single session, but the steps to do this are a little tricky. I will explain those steps here.
For this explanation, suppose the python module you are debugging is “experiment.py”. In the instructions below, replace that with whatever you are using.
This will likely produce three matching processes. Choose the one that has
--connect
on the command line.{ "name": "(gdb) Attach", "type": "cppdbg", "request": "attach", "program": "/path/to/your/python/interpreter", "processId": "${command:pickProcess}", "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] },
and supply the pid found in the previous step. Note that by default you need super-user permission to attach to a process. However, you can get around this by setting /proc/sys/kernel/yama/ptrace_scope to 0.
Once you have done the previous step vscode will be in what is known as multi-target debugging. See https://code.visualstudio.com/Docs/editor/debugging#_multitarget-debugging. You can then select which debug session is current using a drop-down that is just to the right of the debug controls (i.e. where the buttons are for continuing, stepping, etc.). The buttons will act on whichever debug session you have selected. You will also see call-stacks for each debug session, and the variables and such displays will be for the selected debug session.
Now, the above procedure works, but it would be useful if the python debugger could automate this (perhaps on request using a configuration parameter), by getting the pid automatically, and activating the C++ debugger with an attach.