如何在 Ubuntu 上的 Visual Studio 代码中调试 mpirun Python 进程?
How to debug mpirun Python processes in Visual Studio Code on Ubuntu?
在Visual Studio中创建/home/bob/foobar.py
代码 与 VS 代码 Docker
分机
import ptvsd
import time
ptvsd.enable_attach(address = ('0.0.0.0', 5678))
ptvsd.wait_for_attach()
time.sleep(2)
print("all righty then")
在最后一行设置断点。
调试|添加配置
在launch.json中加入"configurations"
{
"name": "Python Attach (Remote Debug ptsvd default)",
"type": "python",
"request": "attach",
"pathMappings": [
{
"localRoot": "/home/bob", // You may also manually specify the directory containing your source code.
"remoteRoot": "/home/bob" // Linux example; adjust as necessary for your OS and situation.
}
],
"port": 5678, // Set to the remote port.
"host": "0.0.0.0" // Set to your remote host's public IP address.
},
$ python -m pip install --user --upgrade ptvsd
$ python foobar.py
使用配置 "Python Attach (Remote Debug ptsvd default)" 启动调试器。它在断点处停止。
但是如果我运行mpi运行
$ mpirun --allow-run-as-root -np 2 -H localhost:2 -bind-to none -map-by slot -x PATH -mca pml ob1 -mca btl ^openib python ./foobar.py
我收到错误 socket.error: [Errno 98] Address already in use
有没有办法在launch.json和foobar.py[=41中为任意数量的进程分配多个端口=]?
这目前是不可能的,但 ptvsd 团队已将其添加为可能的增强功能。 Vote it up 如果这对您很重要。对该团队的支持似乎将功能提升到 to-do 列表。
在Visual Studio中创建/home/bob/foobar.py 代码 与 VS 代码 Docker 分机
import ptvsd
import time
ptvsd.enable_attach(address = ('0.0.0.0', 5678))
ptvsd.wait_for_attach()
time.sleep(2)
print("all righty then")
在最后一行设置断点。
调试|添加配置
在launch.json中加入"configurations"
{
"name": "Python Attach (Remote Debug ptsvd default)",
"type": "python",
"request": "attach",
"pathMappings": [
{
"localRoot": "/home/bob", // You may also manually specify the directory containing your source code.
"remoteRoot": "/home/bob" // Linux example; adjust as necessary for your OS and situation.
}
],
"port": 5678, // Set to the remote port.
"host": "0.0.0.0" // Set to your remote host's public IP address.
},
$ python -m pip install --user --upgrade ptvsd
$ python foobar.py
使用配置 "Python Attach (Remote Debug ptsvd default)" 启动调试器。它在断点处停止。
但是如果我运行mpi运行
$ mpirun --allow-run-as-root -np 2 -H localhost:2 -bind-to none -map-by slot -x PATH -mca pml ob1 -mca btl ^openib python ./foobar.py
我收到错误 socket.error: [Errno 98] Address already in use
有没有办法在launch.json和foobar.py[=41中为任意数量的进程分配多个端口=]?
这目前是不可能的,但 ptvsd 团队已将其添加为可能的增强功能。 Vote it up 如果这对您很重要。对该团队的支持似乎将功能提升到 to-do 列表。