在Ubuntu服务器上进行Python代码远程调试,是许多开发者面临的常见需求。虽然网上教程众多,但真正实用且能覆盖不同场景的解决方案,其实主要集中在几套成熟方案上。本文将从IDE集成调试到轻量级工具,逐一详细解析,帮助您快速掌握远程调试技巧。
Python在Ubuntu上的远程调试方法
1. 使用VS Code的Remote Development扩展包实现远程调试(推荐)
在远程调试领域,VS Code的Remote Development扩展包堪称一把利器。它通过SSH直连远程Ubuntu服务器,让您可以在本地编写和修改代码,而调试器则在远程服务器上运行,体验几乎与本地开发无异。具体操作步骤如下:

- 首先安装扩展。在VS Code扩展商店中搜索“Remote – SSH”并安装(前提是本地已安装VS Code)。
- 配置SSH连接。按下
Ctrl+Shift+P打开命令面板,输入“Remote-SSH: Connect to Host…”,然后输入远程服务器的SSH地址,如user@remote_host。连接成功后,VS Code会自动在远程服务器上安装必要的组件,整个过程无需手动干预。 - 配置调试器。在VS Code中创建
launch.json文件——点击左侧“Run and Debug”图标,再点击齿轮图标。添加以下配置(请根据实际情况替换remote_host和路径):{"version": "0.2.0","configurations": [{"name": "Python: Remote Attach","type": "python","request": "attach","connect": {"host": "remote_host",// 远程服务器IP或域名"port": 5678 // 调试端口(需与远程一致)},"pathMappings": [{"localRoot": "${workspaceFolder}",// 本地项目路径"remoteRoot": "/path/to/your/project"// 远程项目路径}]}]} - 启动远程调试。在远程Ubuntu服务器上执行脚本时,添加调试参数:
然后返回VS Code,点击“开始调试”按钮,即可看到断点、单步执行、变量监视等功能正常运行。python -m debugpy --listen 0.0.0.0:5678 /path/to/your/script.py
2. 使用PyCharm Professional Edition进行远程调试
如果您是PyCharm的忠实用户,其专业版(Professional Edition)自带的远程调试功能同样非常成熟。核心思路是在本地启动一个Debug Server,远程脚本通过pydevd_pycharm库连接回本地。具体操作步骤如下:
- 安装
pydevd-pycharm库。在远程Ubuntu服务器上,使用pip安装与本地PyCharm版本匹配的库,例如pip install pydevd-pycharm==221.5921.27(具体版本号请根据本地PyCharm版本确定)。 - 配置PyCharm Debug Server。打开PyCharm,点击“Edit Configurations”→“+”→“Python Debug Server”,填写以下信息:
- Name:任意名称,例如“Ubuntu Debug”;
- IDE host name:本地机器的IP地址,如
192.168.1.100; - Port:调试端口号,如
2233。
- 修改远程代码。在需要调试的Python脚本中,添加以下代码(确保IP和端口与上述配置一致):
import pydevd_pycharmpydevd_pycharm.settrace('192.168.1.100', port=2233, stdoutToServer=True, stderrToServer=True) - 启动调试。首先在PyCharm中点击“Debug Ubuntu Debug”按钮,启动调试服务。然后在远程服务器上运行脚本(
python3 script.py),PyCharm将自动连接并进入调试模式,断点、变量监控等功能均可正常使用。
3. 使用rpdb远程调试库实现轻量级远程调试
如果您不想配置复杂的IDE,仅需偶尔快速定位问题,那么rpdb是一个绝佳选择。它基于Python内置的pdb调试器,但扩展为远程模式,只需几行代码即可实现远程调试。
- 安装rpdb。需要在本地和远程服务器上都安装,执行
pip install rpdb。 - 插入断点。在需要调试的脚本中,添加以下代码(指定监听地址和端口):
import rpdbrpdb.set_trace(address=('0.0.0.0', 4444))# 监听所有IP的4444端口 - 连接调试。在本地机器上,使用telnet或nc工具连接远程服务器的端口:
连接成功后,就可以使用pdb的命令了——telnet remote_host 4444# 或 nc remote_host 4444c继续执行、n单步执行、p 变量名打印变量值,与本地调试体验完全一致。
注意事项
- 安全性:远程调试需要开放端口,建议使用SSH隧道加密通信(例如VS Code的Remote - SSH扩展默认使用SSH加密)。此外,避免使用弱密码,推荐使用SSH密钥登录。
- 环境一致性:确保本地和远程服务器的Python版本以及依赖库一致。推荐使用
requirements.txt或虚拟环境(如venv、conda)来同步环境,避免调试时出现意外错误。 - 端口冲突:调试端口(如5678、2233、4444)需确保未被占用,可以使用
netstat -tulnp | grep 端口号命令进行检查。
