RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
Pycharm远程调试原理及具体配置详解-创新互联

前言

成都创新互联公司服务项目包括沅江网站建设、沅江网站制作、沅江网页制作以及沅江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,沅江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到沅江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

工作中使用Pycharm作为python开发的IDE,作为专业的python集成开发环境,其功能之强大令人折服。开发过程中Debug是必不可少的。平时经常使用Pycharm的remote debug功能,非常好用。但是刚开始的时候并不了解该过程的原理,只是按部就班的配置。于是抽空了解了一下相关知识,期待能够了解其原理,今后能够在需要的时候自己独立的配置调试环境。本文将以浅显易懂的方式讲解一下相关过程。

1.应用环境

常见的IDE基本都具有Local Debugger功能。一般只需要简单的配置,直接加断点并使用Debug方式运行即可使用断点调试。这是对于本地调试开发而言。如果项目已经完成并上线部署到服务端,或者是本地需要在IDE之外单独配置并启动程序,那么显然不能使用本地调试。如果能够配合日志并使用断点定位分析问题,将会事半功倍。那么如何使用本地安装的Pycharm远程调试程序?

2.远程调试原理


如果程序部署在远端,要在本地获取程序运行状态并进行断点调试,必然需要连接到程序并进行通讯。利用Pycharm进行远程调试过程中,Pycharm充当服务器的角色。

首先,对Pycharm Run/Debug Configures进行配置,指定Pycharm安装端的一些属性,比如Pycharm所在主机的IP地址和端口号等。

然后,启动Pycharm的远程调试。这时Pycharm处于监听状态,等待独立于IDE之外运行的程序的连接。

其次,在远端程序刚启动时,需要根据Pycharm Debug Configures中的配置信息,连接到Pycharm。

最后,连接成功之后,当远程客户端运行到本地Pycharm中设置的断点处时,便会在断点处暂停程序的执行,而在本地Pycharm命中断点处能够看到远端程序当前运行的状态和调用栈等信息并进行下一步跟踪和逐步调试。

本地Pycharm中调试的源代码工程应和远端运行的程序源代码保持一致。Pycharm中Remote Debug Configure的配置要保证能够被远程连接。

由于远程客户端使用Pycharm提供的pydevd模块连接到本地的Pycharm remote Debug,两者通讯链接均遵循Pycharm自定义的协议。因此我们不必关心Pycharm设置断点和远程客户端命中断点过程中两端具体的实现和处理过程,只要保证我们的Debug Configure有效即可。然后在需要的地方通过断点暂定程序,分析当前程序状态找出问题所在。

3.Pycharm具体配置


下面是当前的操作环境,原理和步骤都是想通的,可根据实际情况进行配置配即可。

当前环境:

  • Win7
  • Python 2.7.12
  • PyCharm Professional 2017.1.4 (community版本 好像没有remote debug 功能)

本地完成Pycharm的安装,在安装目录找到debug-eggs文件夹,里面有两个文件:

  • pycharm-debug.egg
  • pycharm-debug-py3k.egg

分别对应本地python解释器为python2和python3的情况。

解压pycharm-debug.egg文件,得到的文件夹pycharm-debug中包含的是remote debug相关的模块。

远程客户端便是通过该文件夹中pydevd文件的settrace方法连接到指定的debug server的。

客户端配置:

为方便起见,我们将客户端也放置到本地。(远端的只需要将下面的localhost改为Pycharm所在端的IP即可)

工程中添加刚才解压得到的远程调试模块:

./pycharm-debug

下面还需要封装一个连接到Remote Debug Server的文件

./PycharmRemoteDebug.py

import sys
sys.path.append('./Pycharm_debug')
import pydevd
if __name__ != '__main__':
 pydevd.settrace('localhost', port=23456, stdoutToServer=True, stderrToServer=True, suspend=False)

网站标题:Pycharm远程调试原理及具体配置详解-创新互联
网站链接:http://lswzjz.com/article/ceeoih.html