zoukankan      html  css  js  c++  java
  • 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地址和端口号可以从远程计算机访问的到,否真会无法建立连接。
    通讯建立起来,进入调试如下图所示:

    至此,调试开始,有疑问的小伙伴可以留言交流。
    原文转载地址

  • 相关阅读:
    PHP 扩展开发
    redis 简单动态字符串 SDS
    解决 call to undefined function mssql_connect 报错
    aws lnmp环境搭建 绑定域名
    PHP 内存管理 写时复制 垃圾回收
    CSS3详解:transform、transition
    详细图解window环境mongodb下载、安装、配置与使用
    介绍一款好用 mongodb 可视化工具
    安装MongoDB启动时报错‘发生系统错误2’的解决办法
    .md即markdown文件的基本常用编写语法
  • 原文地址:https://www.cnblogs.com/love9527/p/8268092.html
Copyright © 2011-2022 走看看