按照以下说明进行操作: https://nadiah.org/2020/03/01/example-debug-mixed-python-c-in-visual-studio-code/
我遇到了一个奇怪的错误。第五步写着:
在终端中,VS Code 会告诉您需要超级用户访问权限才能附加到进程。输入 Y 并输入 root 密码。
但是,我无法输入“Y”,因为当系统询问我是否要继续作为超级用户时,会添加额外的一行。看图:
我的launch.json是:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceRoot}/venv/bin/python", /* My virtual env */
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
我尝试以超级用户身份启动 VS Code,但没有成功。将 sudo 添加到“MIMode”也是无效的。
我尝试了https://github.com/microsoft/vscode-cpptools/issues/4988中提出的解决方案也无济于事。
非常感谢您的帮助!
经过大量搜索和头脑风暴,我终于能够通过 VS Code 调试 Python 和 CPP 代码。步骤顺序如下:
安装“Python C++ 调试器”扩展 [link]。此扩展将消除手动输入 C++ 进程 ID 的痛苦。
这是我的“launch.json”文件,供参考如何使用这个新扩展:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python C++ Debug",
"type": "pythoncpp",
"request": "launch",
"pythonLaunchName": "Python: Current File",
"cppConfig": "default (gdb) Attach"
},
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "/home/agaurav/main.py",
"console": "integratedTerminal",
"env": {
"LD_LIBRARY_PATH": "/path/to/lib1:/path/to/lib2"
},
"cwd": "${workspaceRoot}"
}
]
}
最后,将 ptrace_scope 设置为 0,以便我们允许一个进程检查和修改另一个进程。通过运行以下命令来执行此操作:
回声0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
完成。现在你可以在 Python 和 Cpp 上设置断点
我找到了使用 VSCode 版本 1.42.1 的解决方法。我不知道其他版本是否也有效。我希望这会有所帮助,但如果您使用最新版本有更好的解决方案,请通过发布您的答案让我们知道。我将此问题报告为错误。
更新: 此错误已在 VSCode 版本 1.52.1 中解决。
快乐编码!
“(gdb) Attach”或“(cuda-gdb) Attach”是否有效。 “echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope”不是一个好的解决方案,这是一个安全威胁。