vscode遠(yuǎn)程調(diào)試python

文章有更新,具體請看:http://m.itdecent.cn/p/51000ae5b2f7

最近遇上一個(gè)糾結(jié)的事情,就是代碼放到服務(wù)器之后才出現(xiàn)錯(cuò)誤,但是線上調(diào)試往往采用直接修改線上代碼,然后print結(jié)果,這樣子非常不友好,所以決定尋找遠(yuǎn)程調(diào)試方案。

在網(wǎng)上一搜,都是使用pycharm來進(jìn)行遠(yuǎn)程調(diào)試,但是這是專業(yè)版才有的功能,這可難了我這個(gè)平時(shí)使用pycharm社區(qū)版的人,好在發(fā)現(xiàn)vscode又開源又支持遠(yuǎn)程調(diào)試,下面已遠(yuǎn)程調(diào)試開發(fā)flask應(yīng)用為例子說一下如何進(jìn)行遠(yuǎn)程調(diào)試。

首先,我們要安裝vscode

網(wǎng)址是:https://code.visualstudio.com/Download

這個(gè)IDE的好處是插件多,并且支持win,linux和mac


第二步,我們需要安裝開發(fā)python的插件和一個(gè)同步代碼到遠(yuǎn)程主機(jī)的插件

直接在IDE里搜索下面兩個(gè)插件安裝就好

Python 和 ftp-sync插件

這兩個(gè)插件怎么用呢,可以參考他們的說明文檔,只要配置好就行了。下面是我的配置。

ftp-sync配置


第三步,要在python代碼引入ptvsd這個(gè)庫(微軟的python遠(yuǎn)程調(diào)試支持,很厲害的庫,pip安裝就好)

import ptvsd

ptvsd.settrace(None, ('0.0.0.0', 8000))



第四步,很關(guān)鍵,要在遠(yuǎn)程主機(jī)啟動(dòng)python進(jìn)程,但是需要代碼在運(yùn)行才可以調(diào)試

個(gè)人覺得,應(yīng)該是這個(gè)ptvsd庫打開了一個(gè)socket,然后vscode與socket通訊來獲取調(diào)試結(jié)果


第五步,配置vscode調(diào)試配置

調(diào)試配置


最后一步,在vscode打斷點(diǎn),按F5進(jìn)行調(diào)試就好。



一點(diǎn)點(diǎn)說明,還記得ftp-sync插件嗎,他可以在我們保存代碼的時(shí)候同步到遠(yuǎn)程主機(jī),如果我們代碼可以自動(dòng)重新加載,調(diào)試能更加方便,但是主要要重新連接調(diào)試哈。


附上我的測試代碼和截圖

# coding:UTF-8

from flask import Flask

import ptvsd

import socket

try:

??? address = ('127.0.0.1', 12345)

??? s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

??? s.bind(address)

except socket.error:

??? ptvsd.settrace(None, ('0.0.0.0', 8000))


app = Flask(__name__)


@app.route('/')

def index():

??? a = 5 + 6

??? return "ok"


if __name__ == '__main__':

??? app.run(host='0.0.0.0', port=3000, debug=True)

調(diào)試中

上面有一個(gè)調(diào)試技巧,因?yàn)閒lask框架在debug模式會(huì)產(chǎn)生兩個(gè)進(jìn)程,所以我們得在工作進(jìn)程使用ptvsd,所以有下面這神奇代碼。

try:

??? address = ('127.0.0.1', 12345)

??? s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

??? s.bind(address)

except socket.error:

??? ptvsd.settrace(None, ('0.0.0.0', 8000))


如果有什么建議或者提問歡迎評論!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容