在 VS Code 中调试混合 Python C++。无法输入sudo密码
Debugging mixed Python C++ in VS Code. Can't enter sudo password
按照以下说明进行操作:
https://nadiah.org/2020/03/01/example-debug-mixed-python-c-in-visual-studio-code/
我运行进入st运行ge错误。在第五步中,它显示为:
在终端中,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中提出的解决方案也无济于事。
非常感谢您的帮助!
我找到了使用 VSCode 版本 1.42.1 的解决方法。我不知道其他版本是否也有效。我希望这会有所帮助,但如果您有使用最新版本的更好解决方案,请通过发布您的答案让我们知道。我将此问题报告为错误。
更新:
此错误已在 VSCode 版本 1.52.1 中解决。
编码愉快!
经过大量搜索和头脑风暴,我终于能够通过 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,这样我们就可以让一个进程检查和修改另一个进程。通过 运行 此命令执行此操作:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
完成了。现在您可以在 Python 和 Cpp
处设置断点
按照以下说明进行操作: https://nadiah.org/2020/03/01/example-debug-mixed-python-c-in-visual-studio-code/
我运行进入st运行ge错误。在第五步中,它显示为:
在终端中,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中提出的解决方案也无济于事。
非常感谢您的帮助!
我找到了使用 VSCode 版本 1.42.1 的解决方法。我不知道其他版本是否也有效。我希望这会有所帮助,但如果您有使用最新版本的更好解决方案,请通过发布您的答案让我们知道。我将此问题报告为错误。
更新: 此错误已在 VSCode 版本 1.52.1 中解决。
编码愉快!
经过大量搜索和头脑风暴,我终于能够通过 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,这样我们就可以让一个进程检查和修改另一个进程。通过 运行 此命令执行此操作:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
完成了。现在您可以在 Python 和 Cpp
处设置断点