vscode遠程調試python

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

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

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

首先,我們要安裝vscode

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

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


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

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

Python 和 ftp-sync插件

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

ftp-sync配置


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

import ptvsd

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



第四步,很關鍵,要在遠程主機啟動python進程,但是需要代碼在運行才可以調試

個人覺得,應該是這個ptvsd庫打開了一個socket,然后vscode與socket通訊來獲取調試結果


第五步,配置vscode調試配置

調試配置


最后一步,在vscode打斷點,按F5進行調試就好。



一點點說明,還記得ftp-sync插件嗎,他可以在我們保存代碼的時候同步到遠程主機,如果我們代碼可以自動重新加載,調試能更加方便,但是主要要重新連接調試哈。


附上我的測試代碼和截圖

# 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)

調試中

上面有一個調試技巧,因為flask框架在debug模式會產(chǎ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))


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

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容