遠程調試技巧


搬運出處: https://mp.weixin.qq.com/s?__biz=MzIzMzMzOTI3Nw==&mid=2247484970&idx=1&sn=9ac9c5dfcdc8c6b48a7b4c9854825734&source=41#wechat_redirect

這一篇是很早以前的文章,這次重新發布,是想將幾個調試工具集中講一下。有的朋友已經看過,但是沒有關系。

一般情況下,我們開發調試都是在個人PC上完成,遇到問題,開一下 Pycharm的調試器,很快就能找到問題所在。

可有些時候,項目代碼的運行會對運行環境有依賴,必須在部署了相關依賴組件的服務器上才可以運行,這就直接導致了我們不能在本地進行調試。

對於這種特殊的場景,就我所知,有如下兩種解決方案:

  • pdb

  • Remote Debug

本篇文章會先講第二種方案,它是 專業版Pycharm 才開放的功能,需要你安裝專業版的Pycharm,具體升級破解步驟,請自行 Google,這里不涉及。

遠程調試的意思,是讓我們可以在我們在 PC 上用 Pycharm 的圖形化界面來進行調試代碼,它和本地調試沒有太大的區別,原來怎么調試的現在還是怎么調試。

區別就在於,本地調試不需要事前配置,只要你的代碼准備好了,隨時可以開始 Debug 。而遠程調試需要不少前置步驟,這些設置過程,也是本文的主要內容。

1. 新建一個項目

首先,要在Pycharm中新建一個空的項目,后面我們拉服務器上的項目代碼就會放置在這個項目目錄下。我這邊的名字是NOVA,你可以自己定義。

2.  配置連接服務器

Tools->Deployment->configuration

 

 

添加一個Server

  • Name:填你的服務器ip

  • Type:設定成SFTP

 

 

 

點擊OK后,進入如下界面,你可以按我的備注,填寫信息:

  • SFTP host:公網ip

  • Port:服務器開放的ssh端口

  • Root path:要調試的項目代碼目錄

  • Username:登陸服務器所用的用戶

  • Auth type:登陸類型,這里選密碼

  • Password:登陸密碼,可以選擇保存密碼

這里請注意,要確保你的電腦可以ssh連接到你的服務器,不管是密鑰登陸還是密碼登陸,如果開啟了白名單限制要先解除。

 

 

 

填寫完成后,切換到Mappings選項卡,在箭頭位置,填寫\

 

 

 

以上服務器信息配置,全部正確填寫完成后,點擊OK

接下來,我們要連接遠程服務器了。
Tools -> Deployment -> Browse Remote Host

 

 

 

 

3.  下載項目代碼

如果之前填寫的服務器登陸信息准確無誤的話,現在就可以看到遠程的項目代碼。

 

 

 

選擇下載遠程代碼要本地。

 

 

 

下載完成提示。

 

 

 

現在的IDE界面應該是這樣子的。

 

4. 下載遠程解釋器

為什么需要這步呢?

遠程調試是在遠端的服務器上運行的,它除了依賴其他組件之外,還會有一些很多Python依賴包我們本地並沒有。

進入 File -> Settings
按圖示,添加遠程解釋器。

 

 

 

填寫遠程服務器信息,跟之前的一樣,不再贅述。

 

 

 

點擊OK后,會自動下載遠程解釋器。如果你的項目比較大,這個時間可能會比較久,請耐心等待。

5. 添加程序入口

因為我們要在本地DEBUG,所以你一定要知道你的項目的入口程序。如果這個入口程序已經包含在你的項目代碼中,那么請略過這一步。

如果沒有,就請自己生成入口程序。

比如,我這邊的項目,在服務器上是以一個服務運行的,服務的入口是Service文件:/usr/lib/systemd/system/openstack-nova-compute.service

 

 

 

看到那個ExecStart沒有?那個就是我們程序的入口。
我們只要將其拷貝至我們的Pycharm中,並向遠程同步該文件。

 

 

 

6. 調試前設置

開啟代碼自動同步,這樣,我們對代碼的修改Pycharm都能識別,並且為我們提交到遠程服務器。

 

 

開啟 Gevent compatible,如果不開啟,在調試過程中,很可能出現無法調試,或者無法追蹤/查看變量等問題。

 

7.  開始調試代碼

在你的程序入口文件處,點擊右鍵,選擇Debug即可。

如果你的程序入口,需要引入參數,這是經常有的事,可以的這里配置。

 

 

配置完點擊保存即可。

 

 

附:友情提醒

按照文章的試調試代碼,會自動同步代碼至遠端,千萬不要在生產環境使用,一定要在開發環境中使用,否則后果自負。

調試工具給了程序員提供了很大的便利,但還是希望你不要過度依賴。盡量在每次寫代碼的時候,都追求一次成型,提高自己的編碼能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM