Openstack Pycharm 的远程调试
问题背景
最近再研究openstack cinder api的时候遇到了个问题:使用命令行调用API的时候,使用domain的token时,会产生一个错误,但是通过cinder的api都无法确定产生错误的具体位置或者具体错误信息,使得运维或者测试看的一头雾水。所以,就需要对openstack的源代码进行debug,由于opesntack部署在服务器的一个虚拟机上面,而开发环境又在自己的本机环境,在这种情况下,就需要对源代码进行远程debug来定位分析问题了。再此,我将这个配置和debug的过程记录下来,希望可以帮助到其他的小伙伴-
远程调试的工作原理
远程调试的功能再Eclipse、IntelLiJ IDEA等大型IED中均有支持,实现原理基本相同,这里采用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添加至引用路径,可以采用多种方式:
- 采用esay_install pycharm-debug.egg命令进行安装(pip命令无法安装,只能使用easy_install);
- 将pychram-debug.egg添加至PYTHON或sys.path:import sys;sys.path.append('/home/leo/app-dependancies/pycharm-debug.egg')
- 解压pycharm-debug.egg,将其中的pydev文件夹拷贝至远程应用程序目录下
最后,在远程计算机的python命令行中输入import pydevd,若没有报错则说明pydevd模块安装成功,如下图所示:

2、在本地开发环境的pycharm中进行监听配置
在pycharm中配置说明如下:
- 【Run】 - > 【Edit Configurations】
- 【Add New Configuration】- > 【Python Remote Debug】
- 填写Local host name和port,其中Local host name指的是本机开发环境的IP地址,而port则随便填写一个未被占用的端口即可;需要注意的是,由于远程计算机需要连接至本地开发环境,因此本地IP应该保证远程可以访问的到
- 【Apply】and 【OK】
如下图所示:

3、在本地开发环境的pycharm中配置Mapping映射
【Tools】-> 【Depioyment】->【Configuration】如下图所示:

【Mappings】配置Local path和Deployment path on server(这里选择远程计算上需要映射的代码文件即可):

点击OK,等待远程代码下载到本地pycharm里面
4、在远程计算机的应用程序中插入代码
将如下代码插入至远程计算机的应用程序中
import pydevd
pydevd.settrace('172.18.0.131', port=8090, stdoutToServer=True, stderrToServer=True)
其中,IP地址和端口号要与pycharm中监听配置保持一致
如下截图:

5、在pycharm中启动Debug Server
【Run】->【Debug】或者点击pycharm的有个虫子的图标,选择刚创建的远程调试配置项,在Debug Console中会显示如下信息:

这说明Debug Server已经启动并处于监听状态
6、向远程计算机应用程序发送请求(命令行、postman或者horizon都可以)
向远程计算机程序发送请求,当执行到pydevd.settrace语句时,便会与本地开发环境中的pycharm建立通讯连接,接下来便可以在本地IDE中进行单步调试了。
需要注意的是,本地开发环境必须保证IP地址和端口号可以从远程计算机访问的到,否真会无法建立连接。
通讯建立起来,进入调试如下图所示:

至此,调试开始,有疑问的小伙伴可以留言交流。
原文转载地址
Openstack Pycharm 的远程调试的更多相关文章
- 使用pycharm远程调试python代码
使用 pycharm 进行 python 代码远程调试 pycharm 的远程调试是从远程机器连接到本地机器,需要在远程机器的py文件中指定本地机器的IP和端口. 远程机器上,通过easy_insta ...
- Pycharm远程调试原理及配置
工作中使用Pycharm作为python开发的IDE,作为专业的python集成开发环境,其功能之强大令人折服.开发过程中Debug是必不可少的.平时经常使用Pycharm的remote debug功 ...
- PyCharm实现高效远程调试代码
PyCharm实现高效远程调试代码 (薛刚强) 为方便Python代码学习和项目开发,目前选择专业的 IDE 开发工具 ,如 PyCham.针对个人使用的技巧做个笔记,分享给大家,有描述 ...
- pycharm搭建开发配置,远程调试,数据库配置,git配置等
1 开发环境搭建 1.1 简介 使用虚拟机作为代码运行环境,本地使用pycharm进行代码编辑,使用远程调试功能进行debug. 1.1 安装centos虚拟机环境: 1.操作系统: 2.网络配置: ...
- 一分钟搞定pychram远程调试和同步代码
首先说一下需求,否则很多人都不知道pycharm这个远程同步和调试到底是干嘛使的. 需求很简单,我想要在本地的windows机器上跑一个程序,但是程序运行会加载一些很占内存的树型数据结构,称其为tre ...
- 利用pycharm远程调试openstack代码
1.安装pycharm专业版 本文安装pycharm 2016.2.3专业版.网上教程较多,这里不做详细介绍,只要到pycharm官网上下载应用程序进行安装即可. 2.pycharm配置 (1)首先按 ...
- pycharm快捷键、配置virtualenv环境,配置django调试,配置远程调试
pycharm安装和首次使用 http://blog.csdn.net/chenggong2dm/article/details/9365437 快捷键: 找文件.代码.引用相关 1.双击shift ...
- Pycharm远程调试
1.在pycharm的安装目录中找到pycharm-debug.egg,将其拷贝到目标主机的/usr/lib/python2.7/dist-packages目录下: 执行: sudo easy_ins ...
- 在ubunut下使用pycharm和eclipse进行python远程调试
我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...
随机推荐
- linux中/bin和/sbin和/usr/bin和/usr/sbin
首先先解释一下bin和sbin的意思: 1.bin:为任何用户都可以使用的指令 2.sbin:(super bin)也就是只有超级管理员才能使用的指令 /usr UNIX Software Re ...
- MysqL主主复制_模式之日志点复制
主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更,可以起到一定的压力分担等作用. 测试两台虚拟机IP分别为: 192.168.136.131.192.168.136. ...
- EmguCv“线段” 结构类型学习
1. 文件所在 Namespace: Emgu.CV.Structure Assembly: Emgu.CV (in Emgu.CV.dll) Version: 3.0.0.2157 (3.0.0.2 ...
- nyoj 1129 Salvation 模拟
思路:每个坐标有四种状态,每个点对应的每种状态只能走一个方向,如果走到一个重复的状态说明根本不能走到终点,否则继续走即可. 坑点:有可能初始坐标四周都是墙壁,如果不判断下可能会陷入是死循环. 贴上测试 ...
- Flask Ansible自动化平台搭建(持续更新)
一:简介 使用Ansible + Flask + Celery搭建web平台. 目录结构 . ├── ansible_api │ ├── ansible_playbook_inventory.py ...
- Luogu P1747 好奇怪的游戏
题目背景 <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被 ...
- ui设计未来前景怎么样?ui设计这个行业怎么样?
千锋UI设计师培训不仅有正常的培训课程,还为学员提供了UI+产品经理周末提升班,目的是为了给那些有基础的UI设计师提高能力.今天要为大家说的是一位千锋UI设计师的故事. 大家好,我是千锋UI设计培训部 ...
- js基本类型与引用类型,浅拷贝和深拷贝
1. 基本类型: string,number,boolean,null,undefined 2. 引用类型: Function,Array,Object 基本类型:存放在栈内存中的简单数据段,数据大小 ...
- ERROR 1045 (28000): Access denied for user xxx & ERROR 1449 (HY000): The user specified as a definer xxx does not exists
今天在一个修改过权限的MySQL数据库遇到了"ERROR 1045 (28000): Access denied for user 'xxx'@'xxx.xxx.xxx.xxx' (usin ...
- REALTEK 刷机方法 法
REALTEK 是通用板最多的IC 方案之一,什么常说的2025 2270 2023 2033 2525 2545 2660 2280 2662 2670 2672 2674 2661 2668 ...