在 VS Code 中调试混合 Python C++。无法输入sudo密码

问题描述 投票:0回答:3

按照以下说明进行操作: https://nadiah.org/2020/03/01/example-debug-mixed-python-c-in-visual-studio-code/

我遇到了一个奇怪的错误。第五步写着:

在终端中,VS Code 会告诉您需要超级用户访问权限才能附加到进程。输入 Y 并输入 root 密码。

但是,我无法输入“Y”,因为当系统询问我是否要继续作为超级用户时,会添加额外的一行。看图:

source /.../venv/bin/activate appears in an unexpected place

我的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中提出的解决方案也无济于事。

非常感谢您的帮助!

python c debugging visual-studio-code gdb
3个回答
4
投票

经过大量搜索和头脑风暴,我终于能够通过 VS Code 调试 Python 和 CPP 代码。步骤顺序如下:

  1. 安装“Python C++ 调试器”扩展 [link]。此扩展将消除手动输入 C++ 进程 ID 的痛苦。

  2. 这是我的“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}"
        }
    ]
    

    }

  3. 最后,将 ptrace_scope 设置为 0,以便我们允许一个进程检查和修改另一个进程。通过运行以下命令来执行此操作:

回声0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

完成。现在你可以在 Python 和 Cpp 上设置断点


0
投票

我找到了使用 VSCode 版本 1.42.1 的解决方法。我不知道其他版本是否也有效。我希望这会有所帮助,但如果您使用最新版本有更好的解决方案,请通过发布您的答案让我们知道。我将此问题报告为错误。

更新: 此错误已在 VSCode 版本 1.52.1 中解决。

快乐编码!


0
投票

“(gdb) Attach”或“(cuda-gdb) Attach”是否有效。 “echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope”不是一个好的解决方案,这是一个安全威胁。

© www.soinside.com 2019 - 2024. All rights reserved.