最近有個小夥伴遇到一件很頭疼的事。windows
公司的項目都在遠程的服務器上,項目工程巨大,看源代碼把本身都繞暈了,特別是Python這種動態語言。同時在本地寫好了代碼,同步代碼也挺麻煩的,費了九牛二虎之力,終於把代碼折騰到服務器上了,運行了下項目,扎心了,錯漏百出,有些問題甚至還不知道問題出如今哪裏,該怎麼改。服務器
對於這個問題,老司機固然是輕車熟路,我跟她說:遠程調試,瞭解一下。app
她就去搜了一堆網文,跟着實踐,到最後仍是沒有解決。我看了她給我發的網文,確實寫的有點亂。ide
我看着我胸前的紅領巾,我以爲我應該擔負起這個堅巨的任務,寫下這個圖文教程。工具
通常來講,咱們熟悉的調試工具都是windows本地進行調試,可是咱們的項目運行極可能須要依賴遠程服務器的特殊環境才能運行。這個時候,遠程調試功能就是雪中送碳。this
正常Python的遠程調試,會有兩種比較主流的方式(就我知道的和使用的)編碼
pdbspa
Python Remote Debugdebug
這篇文章先來了解下Pycharm自帶的遠程調試工具。3d
新建一個工程
鏈接遠程服務器
下載遠程代碼
下載遠程解釋器
添加程序入口
調試前準備
開始調試代碼
其餘友情提示
我這邊的工程名是NOVA
,請自行定義。
Tools -> Deployment -> configuration
添加一個Server
。Name
:請自行定義,我這裏填我服務器的IP地址。Type
:請務必改爲SFTP
點擊OK
後,進入以下界面,按個人備註,填寫信息。
填寫完成後,切換到Mappings
選項卡,在箭頭位置,填寫\
以上服務器信息配置,所有正確填寫完成後,點擊OK
接下來,咱們要鏈接遠程服務器了。
Tools -> Deployment -> Browse Remote Host
若是以前填寫的服務器登錄信息準確無誤的話,如今就能夠看到遠程的項目代碼。
選擇下載遠程代碼要本地。
下載完成提示。
如今的IDE界面應該是這樣子的。
進入 File -> Settings
按圖示,添加遠程解釋器。
填寫遠程服務器信息,跟以前的同樣,再也不贅述。
點擊OK
後,會自動下載遠程解釋器。若是你的項目比較大,這個時間可能會比較久,請耐心等待。
由於咱們要在本地DEBUG,因此你必定要知道你的項目的入口程序。若是這個入口程序已經包含在你的項目代碼中,那麼請略過這一步。
若是沒有,就請本身生成入口程序。
好比,我本身的項目,在服務器上是以一個服務運行的。而咱們都知道服務的入口是Service文件
。cat /usr/lib/systemd/system/openstack-nova-compute.service
[Unit]
Description=OpenStack Nova Compute Server
After=syslog.target network.target libvirtd.service
[Service]
Environment=LIBGUESTFS_ATTACH_METHOD=appliance
Type=notify
NotifyAccess=all
TimeoutStartSec=0
Restart=always
User=nova
ExecStart=/usr/bin/nova-compute
[Install]
WantedBy=multi-user.target
看到那個ExecStart
沒有?那個就是咱們程序的入口。
咱們只要將其拷貝至咱們的Pycharm中,並向遠程同步該文件。
開啓代碼自動同步,這樣,咱們對代碼的修改Pycharm都能識別,而且爲咱們提交到遠程服務器。
開啓Gevent compatible
,若是不開啓,在調試過程當中,極可能出現沒法調試,或者沒法追蹤/查看變量等問題。
對於這個設置,官方解釋是這樣的,我沒有看懂。
If this checkbox is selected, the debugger will be compatible with the Gevent-monkeypatched code.
在你的程序入口文件處,點擊右鍵,選擇Debug便可。
若是你的程序入口,須要引入參數,這是常常有的事,能夠的這裏配置。
配置完點擊保存便可。
調試代碼因爲會自動同步代碼,請不要在生產環境使用,必定要在開發環境中使用,不然後果自負。
調試雖好,但請不要過分依賴。儘可能在每次寫代碼的時候,都追求一次成型,提升本身的編碼能力。