如何远程调试Python代码

Python021

如何远程调试Python代码,第1张

JetBrains 公司出品的集成开发环境以制作精良风格一致得到广泛好评,PyCharm 作为其中一款针对 Python 语言的 IDE 给了我很多帮助,感觉比较好用的是这个远程调试。

远程调试的代码部署在远端服务器上,通过网络传输使用本机进行单步调试。实用场景为本机为非 GPU 机器,可以在远端 GPU 服务器上运行程序,观察程序运行过程中,各个变量在断点处的当前值。

本机打开程序,新建一个configuration

如上图所示

类型为远程调试

填写 本机 ip和端口,

python2.x拷贝pycharm-debug.egg到远端机器,python3.x拷贝的是pycharm-debug-py3k.egg

程序中加入

sys.path.append('/path/to/your/remote/pycharm-debug.egg')

import pydevd

pydevd.settrace('172.18.76.241', port=8602, stdoutToServer=True, stderrToServer=True)123

本机先debug此configuration,然后远端再运行,默认断点为pydevd.settrace的下一行

pycharm远程调试环境网上已经有很多答案,这里不重复,但在远程调试TVM时会有一个坑:pycharm不能读取远程机器的环境变量,从而导致cuda出错或各种错误,比如:

Check failed: (bf != nullptr) is false: target.build.cuda is not enabled

因此需要在pycharm中加入系统变量。

在《TVM安装(一):Ubuntu下配置环境》中曾经提到要把tvm路径加入到环境变量中,其中除了要加入tvm文件路径之外还要加入tvm/python文件夹作为PYTHONPATH

因此在pycharm中也要加入这个环境变量