1

我需要在远程服务器上调试由 VSCode 中的 Python 模块调用的 C++ 库函数。

我正在使用 VSCode 远程开发扩展,并且在远程服务器上使用 vscode 中的 gdb 调试 C++ 代码工作正常,在远程调试 Python 也是如此。

我已经尝试过附加到从终端启动的暂停(等待输入)python 进程,并在使用 vscode 中的 python(远程)调试器启动的断点处附加到 python 进程。

在这两种情况下,我都使用这个 launch.json 配置附加到进程 ID:

{
            "name": "GDB Attach proc 0",
            "type": "cppdbg",
            "request": "attach",
            "program": "/home/nfs/mharris/anaconda3/envs/cudf_dev/bin/python",
            "processId": "${command:pickProcess}",
            "linux": {
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "text": "-enable-pretty-printing",
                        "description": "enable pretty printing",
                        "ignoreFailures": true
                    },
                    {
                        "text": "handle SIGPIPE nostop noprint pass",
                        "description": "ignore SIGPIPE",
                        "ignoreFailures": true
                    }
                ]
            },
        },

它在 gdb 终端窗口中打印以下内容:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/bin/gdb' as the super user
Authenticating as: aseadmin,,, (aseadmin)
Password: [1] + Stopped (tty output)       /usr/bin/pkexec /usr/bin/gdb --interpreter=mi --tty=${DbgTerm} 0</tmp/Microsoft-MIEngine-In-bydexniu.cf5 1>/tmp/Microsoft-MIEngine-Out-mo618uzc.30l
You have stopped jobs.

我相信aseadmin是服务器上的管理员用户。我不知道为什么它试图以超级用户身份运行 gdb。我使用 VSCode 远程连接到远程 - 使用 ssh 密钥身份验证的 SSH(我的用户名不是 aseadmin,所以我不确定它为什么使用它)。

我在 Ubuntu 16.04 LTS 上运行带有远程开发扩展(0.15.0)的 vscode-insider(版本:1.37.0-insider)。

4

0 回答 0