关闭

使用PyCharm进行Python远程调试

标签: pycharm
5441人阅读 评论(0) 收藏 举报
分类:

背景描述
在机房中,服务器通过ADB与多台Android设备相连接,并通过Python应用程序(QMSInterceptor)对Android设备进行任务调度。
在开发环境中对QMSInterceptor调试完毕后,上传至服务器,发现程序运行异常;但是在开发环境中再三检查,都没有发现问题。于是就在想,要是可以在服务器环境中进行单步跟踪调试就好了。
然而,在服务器系统上安装一个IDE肯定是不现实的;通过SSH远程到服务器端,采用pdb进行调试虽然可行,但是操作还是较为繁琐,而且也不够直观。
那么,是否可以将开发环境中的IDE与服务器环境相连,实现利用开发环境的IDE调试服务器环境中运行的程序呢?
答案是肯定的,这就是远程调试(Remote Debug)。

远程调试的工作原理
远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。

在远程调试的模式下,PyCharm(IDE)扮演服务端(Server)的角色,而运行在远程计算机上的应用程序扮演客户端(Client)的角色。正因如此,进行远程调试时,需要先在本地开发环境中设定端口并启动IDE,IDE会对设定的端口开始监听,等待客户端的连接请求;那远程计算机中的应用程序又是怎样与IDE建立通讯连接的呢?

针对远程调试功能,PyCharm提供了pydevd模块,该模块以pycharm-debug.egg的形式存在于PyCharm的安装路径中。远程计算机安装该库文件后,然后就可以调用pydevd.settrace方法,该方法会指定IDE所在机器的IP地址和监听的端口号,用于与IDE建立连接;建立连接后,便可在IDE中对远程在远程计算机中的程序进行单步调试。

远程调试的配置方法
1、在远程计算机上安装pydevd模块

在本地开发环境的PyCharm安装路径中找到pycharm-debug.egg文件(若远程计算机运行的是Python3,则需要pycharm-debug-py3k.egg)
将pycharm-debug.egg文件拷贝至远程计算机
在远程计算机中将pycharm-debug.egg添加至引用路径,可以采用多种方式:
采用easy_install pycharm-debug.egg命令进行安装(pip命令无法安装,只能使用easy_install)
将pycharm-debug.egg添加至PYTHONPATH或sys.path: import sys; sys.path.append(‘/home/leo/app-dependancies/pycharm-debug.egg’)
解压pycharm-debug.egg,将其中的pydev文件夹拷贝至远程应用程序目录下
验证:在远程计算机的Python命令行中输入import pydevd,若没有报错则说明安装成功
2、在本地开发环境的PyCharm中进行监听配置

【Run】->【Edit Configurations】
【Add New Configuration】->【Python Remote Debug】
填写Local host name和Port,其中Local host name指的是本机开发环境的IP地址,而Port则随便填写一个10000以上的即可;需要注意的是,由于远程计算机需要连接至本地开发环境,因此本地IP地址应该保证远程可以访问得到
【Apply】and【OK】
3、在本地开发环境的PyCharm中配置Mapping映射

4、在远程计算机的应用程序中插入代码

将如下代码插入至远程计算机的应用程序中。

import pydevd
pydevd.settrace(‘100.84.48.156’, port=31235, stdoutToServer=True, stderrToServer=True)
其中,IP地址和端口号要与PyCharm中的监听配置保持一致。

5、在PyCharm中启动Debug Server

【Run】->【Debug…】,选择刚创建的远程调试配置项,在Debug Console中会显示如下信息:

Starting debug server at port 31235
Waiting for process connection…
Use the following code to connect to the debugger:
import pydevd
pydevd.settrace(‘100.84.48.156’, port=31235, stdoutToServer=True, stderrToServer=True)
这说明Debug Server已经启动并处于监听状态。

6、在远程计算机中启动应用程序

在远程计算机中启动应用程序,当执行到pydevd.settrace语句时,便会与本地开发环境中的PyCharm建立通讯连接,接下来便可以在本地IDE中进行单步调试了。

需要注意的是,本地开发环境必须保证IP地址和端口号可从远程计算机访问得到,否则会无法建立连接。

telnet100.84.48.15631235Trying100.84.48.156telnet:Unabletoconnecttoremotehost:Connectionrefused python devicedectector.py
Could not connect to 100.84.48.156: 31236
Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd_comm.py”, line 478, in StartClient
s.connect((host, port))
File “/usr/lib/python2.7/socket.py”, line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused
Reference
http://stackoverflow.com/questions/6989965/how-do-i-start-up-remote-debugging-with-pycharm
https://www.jetbrains.com/pycharm/help/remote-debugging.html

Alt+Enter 自动添加包
Ctrl+t SVN更新
Ctrl+k SVN提交
Ctrl + / 注释(取消注释)选择的行
Ctrl + N 查找类
Ctrl+Shift+F 高级查找
Ctrl+Enter 补全
Shift + Enter 开始新行
TAB Shift+TAB 缩进/取消缩进所选择的行
Ctrl + Alt + I 自动缩进行
Ctrl + Y 删除当前插入符所在的行
Ctrl + D 复制当前行、或者选择的块
Ctrl + Shift + J 合并行
Ctrl + Shift + V 从最近的缓存区里粘贴
Ctrl + Delete 删除到字符结尾
Ctrl + Backspace 删除到字符的开始
Ctrl + NumPad+/- 展开或者收缩代码块
Ctrl + Shift + NumPad+ 展开所有的代码块
Ctrl + Shift + NumPad- 收缩所有的代码块

0
0
查看评论

Pycharm 运行跳一跳程序

最近微信小程序跳一跳很火,就有大神用python写出可以刷分的程序。 作为一个对python一窍不通的初学者,也是在看到实验室师哥下载下来成功刷分,觉得还挺有意思的,就跟着学习了一下。 程序的代码包是在Github上下载的,网址如下 https://github.com/searchutf8=...
  • wf15725243865
  • wf15725243865
  • 2018-01-11 18:14
  • 197

利用Pycharm断点调试Python程序

1.代码准备没有语法错误的Python程序:#!/usr/bin/python import numpy as npclass Network: def __init__(self,sizes): self.num_layers=len(sizes) self...
  • u010837794
  • u010837794
  • 2017-06-13 11:10
  • 880

Pycharm中的一些技巧

作为一个工具控,不来总结点pycharm的使用技巧怎么行呢? 1)远程代码编辑+调试 这类使用情景就是,比如远程机器是运行CentOS系统的服务器,本地主机是安装了Pycharm的OS X。 要在本地写代码,远程机器上运行调试。 首先,新建一个项目(目前还是一个空项目),配置远程Python解释器。...
  • u011542994
  • u011542994
  • 2015-12-23 21:45
  • 4232

利用PyCharm实现Python远程调试

Python远程调试 一.介绍 Python远程调试,即在远程机器上运行python代码,在本地进行调试。 需要环境:python  http://www.python.org/getit/ 调试环境:PyCharm  http://www.jetbrains.com/p...
  • luo_yifan
  • luo_yifan
  • 2013-10-26 18:20
  • 18388

远程调试Python进程的小工具

使用pdb和有名管道实现远程Python调试
  • whosemario
  • whosemario
  • 2015-12-01 13:19
  • 1137

vs2013下的python远程调试支持(1)

vs2013下通过PTVS插件可以很好的支持本地Python调试,而其远程调试功能却形同鸡肋。因为虽然PTVS也提供了一个远程调试的功能,但却只能连接到远程的windows主机,无法连接到Linux主机。 本文尝试让vs2013能够直接连接到远程的Linux主机上进行调试。
  • lights_joy
  • lights_joy
  • 2016-05-21 23:07
  • 1918

pycharm调用远程虚拟环境的设置

用python编程,我使用的是pycharm工具,对于比较大的网站开发,服务器当然使用的是linux了,一定不会使用windows的。所以开发环境基本上都是在linux上进行的,但是,有的公司业务繁琐,需要在windows系统里办公,这就是为什么好多程序员都会同时使用多台电脑的原因了,我就是处在这样...
  • dqchouyang
  • dqchouyang
  • 2015-10-20 22:32
  • 2476

pycharm remote deployment 配置问题

(1)无法完整识别服务器端的环境变量 举例: a: shell下 b:win7下使用pycharm 结果发现对应的环境变量值缺失 如此会影响一些模块的正常加载(如cx_Oracle需要对应的环境变量LD_LIBRARY_PATH) 所以第二种情况下加载 import cx_Orac...
  • xwydq
  • xwydq
  • 2016-02-02 19:42
  • 2201

PyCharm远程调试设置

Python编辑利器PyCharm远程调试设置 2014-6-18 13:03| 发布者: idcFREE| 查看: 2427| 评论: 0 摘要: 设置远程SFTP连接 将本地F盘 operation映射到远程服务器 /...
  • xwydq
  • xwydq
  • 2016-01-26 16:37
  • 1903

Python学习之开发环境/开发工具(PyCharm)配置

Python学习之开发环境/开发工具(PyCharm)配置
  • u012527802
  • u012527802
  • 2017-10-13 08:39
  • 176
    个人资料
    • 访问:568461次
    • 积分:6821
    • 等级:
    • 排名:第4113名
    • 原创:140篇
    • 转载:220篇
    • 译文:6篇
    • 评论:26条
    文章分类
    最新评论