小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

利用PyCharm進(jìn)行Python遠(yuǎn)程調(diào)試

 印度阿三17 2019-03-17

背景描述

有時候Python應(yīng)用的代碼在本地開發(fā)環(huán)境運(yùn)行十分正常,但是放到線上以后卻出現(xiàn)了莫名其妙的異常,經(jīng)過再三排查以后還是找不到問題原因,于是就在想,要是可以在服務(wù)器環(huán)境中進(jìn)行單步跟蹤調(diào)試就好了。

然而,在服務(wù)器系統(tǒng)上安裝一個IDE肯定是不現(xiàn)實的;通過SSH遠(yuǎn)程到服務(wù)器端,采用pdb進(jìn)行調(diào)試雖然可行,但是操作還是較為繁瑣,而且也不夠直觀。

那么,是否可以將開發(fā)環(huán)境中的IDE與服務(wù)器環(huán)境相連,實現(xiàn)利用開發(fā)環(huán)境的IDE調(diào)試服務(wù)器環(huán)境中運(yùn)行的程序呢? 答案是肯定的,這就是遠(yuǎn)程調(diào)試(Remote Debug)。

遠(yuǎn)程調(diào)試的工作原理

遠(yuǎn)程調(diào)試的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,實現(xiàn)原理都基本相同,這里采用PyCharm進(jìn)行說明。

在遠(yuǎn)程調(diào)試的模式下,PyCharm(IDE)扮演服務(wù)端(Server)的角色,而運(yùn)行在遠(yuǎn)程計算機(jī)上的應(yīng)用程序扮演客戶端(Client)的角色。正因如此,進(jìn)行遠(yuǎn)程調(diào)試時,需要先在本地開發(fā)環(huán)境中設(shè)定端口并啟動IDE,IDE會對設(shè)定的端口開始監(jiān)聽,等待客戶端的連接請求;那遠(yuǎn)程計算機(jī)中的應(yīng)用程序又是怎樣與IDE建立通訊連接的呢?

針對遠(yuǎn)程調(diào)試功能,PyCharm提供了pydevd模塊,該模塊以pycharm-debug.egg的形式存在于PyCharm的安裝路徑中。遠(yuǎn)程計算機(jī)安裝該庫文件后,然后就可以調(diào)用pydevd.settrace方法,該方法會指定IDE所在機(jī)器的IP地址和監(jiān)聽的端口號,用于與IDE建立連接;建立連接后,便可在IDE中對遠(yuǎn)程在遠(yuǎn)程計算機(jī)中的程序進(jìn)行單步調(diào)試。

遠(yuǎn)程調(diào)試的配置方法

1、在遠(yuǎn)程計算機(jī)上安裝pydevd模塊

首先,在本地開發(fā)環(huán)境的PyCharm安裝路徑中找到pycharm-debug.egg文件(若遠(yuǎn)程計算機(jī)運(yùn)行的是Python3,則需要pycharm-debug-py3k.egg);

然后,將pycharm-debug.egg文件拷貝至遠(yuǎn)程計算機(jī),在遠(yuǎn)程計算機(jī)中將pycharm-debug.egg添加至引用路徑,可以采用多種方式:

  • 采用easy_install pycharm-debug.egg命令進(jìn)行安裝(pip命令無法安裝,只能使用easy_install)
  • pycharm-debug.egg添加至PYTHONPATHsys.path:?import sys; sys.path.append('/home/leo/app-dependancies/pycharm-debug.egg')
  • 解壓pycharm-debug.egg,將其中的pydev文件夾拷貝至遠(yuǎn)程應(yīng)用程序目錄下

最后,在遠(yuǎn)程計算機(jī)的Python命令行中輸入import pydevd,若沒有報錯則說明pydevd模塊安裝成功。

2、在本地開發(fā)環(huán)境的PyCharm中進(jìn)行監(jiān)聽配置

在PyCharm中配置說明如下:

  • 【Run】->【Edit Configurations】
  • 【Add New Configuration】->【Python Remote Debug】
  • 填寫Local host namePort,其中Local host name指的是本機(jī)開發(fā)環(huán)境的IP地址,而Port則隨便填寫一個10000以上的即可;需要注意的是,由于遠(yuǎn)程計算機(jī)需要連接至本地開發(fā)環(huán)境,因此本地IP地址應(yīng)該保證遠(yuǎn)程可以訪問得到
  • 【Apply】and【OK】

3、在本地開發(fā)環(huán)境的PyCharm中配置Mapping映射

4、在遠(yuǎn)程計算機(jī)的應(yīng)用程序中插入代碼

將如下代碼插入至遠(yuǎn)程計算機(jī)的應(yīng)用程序中。

import pydevd
pydevd.settrace('100.84.48.156', port=31235, stdoutToServer=True, stderrToServer=True)

其中,IP地址和端口號要與PyCharm中的監(jiān)聽配置保持一致。

5、在PyCharm中啟動Debug Server

【Run】->【Debug…】,選擇剛創(chuàng)建的遠(yuǎn)程調(diào)試配置項,在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已經(jīng)啟動并處于監(jiān)聽狀態(tài)。

6、在遠(yuǎn)程計算機(jī)中啟動應(yīng)用程序

在遠(yuǎn)程計算機(jī)中啟動應(yīng)用程序,當(dāng)執(zhí)行到pydevd.settrace語句時,便會與本地開發(fā)環(huán)境中的PyCharm建立通訊連接,接下來便可以在本地IDE中進(jìn)行單步調(diào)試了。

需要注意的是,本地開發(fā)環(huán)境必須保證IP地址和端口號可從遠(yuǎn)程計算機(jī)訪問得到,否則會無法建立連接。

$ telnet 100.84.48.156 31235
Trying 100.84.48.156...
telnet: Unable to connect to remote host: Connection refused

$ 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
其實生活很美好,指示你想的太多了。沒有,不會,有差距很正常,因為我不會 來源:http://www./content-1-141951.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多