python 远程调试 pydevd pycharm
前言
pdb调试远程服务器或者容器中的python程序非常的不方便,下面介绍一下怎么使用pycharm调试远程程序
操作
1. 本地启动调试服务
添加 Python Debug Server 运行方式,
注意设置本地监听的ip和端口
以及本地路径和远程路径的映射,这个一定要加,不然没法打断点
2. 确保本地pydevd服务可以被远程机器访问
一般情况下,远程机器是没办法访问本地机器的,所以需要使用内网穿透工具,将本机ip端口映射到公网环境
例如我使用frp做了如下映射
localhost:6767 -> x.x.x.x:9999
3. 远程服务安装调试环境
pip 安装 pydevd-pycharm~=241.15989.155,在运行程序中添加连接调试服务的代码
这模拟在容器中运行
Dockerfile
FROM python:3.10
RUN python3 -m pip install flask pydevd-pycharm~=241.15989.155
COPY server.py server.py
docker-compose.yaml
services:
server:
build: .
command: python3 server.py
volumes:
- ./server.py:/server.py
ports:
- 7789:7789
server.py
import pydevd_pycharm
pydevd_pycharm.settrace('x.x.x.x', port=9999, stdoutToServer=True, stderrToServer=True)
import flask
app = flask.app.Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7789)
4. 运行程序开始调试
启动python程序
docker compose up -d
查看pycharm发现已经进来了
然后就可以像正常调试了