我需要在远程服务器上调试由 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)。