【问题标题】:Debugging mixed Python C++ in VS Code. Can't enter sudo password在 VS Code 中调试混合 Python C++。无法输入 sudo 密码
【发布时间】:2021-02-26 03:51:54
【问题描述】:

按照以下说明进行操作: 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中提出的解决方案,也无济于事。

非常感谢您的帮助!

【问题讨论】:

标签: python c debugging visual-studio-code gdb


【解决方案1】:

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

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

编码愉快!

【讨论】:

    【解决方案2】:

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

    1. 安装 Python C++ Debugger" 扩展 [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 设置断点了

    【讨论】:

    • 非常感谢!!!快乐编码。
    • 我正在尝试做同样的事情,但在一个容器中......在调试期间,CPPtools 的终端是打开的,但没有显示任何内容,并且我的 CPP 中的断点没有任何效果。是否需要进行其他配置才能在容器内进行调试?我有我的 Dockerfile,其中包含所有需要的包 instalked 和 runArgs 在 devcontainer.json 设置中以调试 C++(如同一默认文件中所述)。我在这里错过了什么???
    • 我正在尝试做同样的事情,但在一个容器中......在调试期间,CPPtools 的终端是打开的,但没有显示任何内容,并且我的 CPP 中的断点没有任何效果。是否需要进行其他配置才能在容器内进行调试?我有我的 Dockerfile,其中包含所有需要的包 instalked 和 runArgs 在 devcontainer.json 设置中以调试 C++(如同一默认文件中所述)。我在这里错过了什么???
    猜你喜欢
    • 2019-12-29
    • 2012-10-22
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2020-08-25
    • 2020-09-30
    相关资源
    最近更新 更多