VSCode是MS推出的一款免費的開源並跨平臺的輕量級代碼編輯器,內置Git和Debug等經常使用功能,強大的插件擴展功能以及簡單的配置幾乎能夠打形成任意編程語言的IDE。本文簡單聊一下其本地attach和remote debug功能。html
默認在vscode中打開py文件能夠直接使用斷點調試,使用的Debug模式爲:Python: Current File (Integrated Terminal),這是針對vscode中當前打開的文件。python
對於獨立於vscode以外運行程序的debug,根據是否和vscode位於同一主機能夠分爲local attach和remote debug。編程
下面以python爲例簡單講一下debug功能。json
實際使用根據須要下載最新版本便可。app
打開vscode工程目錄下的.vscode/launch.json文件,添加以下內容:編程語言
{ "version": "0.2.0", "configurations": [ { "name": "Python: Local Attach", "type": "python", "request": "attach", "port": 12345, "host": "127.0.0.1", "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "." } ] }, ] }
若是沒有launch.json,新建一個便可,或者打開左側debug view,選擇打開launch.json,vscode會打開或者建立一個默認的json配置文件,而後將上面configurations列表中的內容複製到已有的launch.json中便可。編輯器
新建一個python腳本文件./Main.pypost
# -*- coding:utf-8 -*- import datetime, time # import VSCodeDebug import ptvsd host = "127.0.0.1" # or "localhost" port = 12345 print("Waiting for debugger attach at %s:%s ......" % (host, port)) ptvsd.enable_attach(address=(host, port), redirect_output=True) ptvsd.wait_for_attach() while True: time.sleep(1) cur_date = datetime.datetime.now() print cur_date
腳本中的host和port必須和launch.json中當前debug模式中host與port的值一致。url
ptvsd模塊安裝:python -m pip install --upgrade ptvsdspa
調試步驟以下:
注意:
結果以下:
遠程調試可讓咱們在本地使用vscode調試遠程主機上運行的程序,而只須要在本地安裝vscode。
在上面.vscode/launch.json文件"configurations"列表中加入下面的內容做爲Remote Debug的配置:
{ "name": "Python: Remote Debug", "type": "python", "request": "attach", "port": 12345, // valid port in remote host "host": "1.2.3.4", // replace with your remote host IP "pathMappings": [ { "localRoot": "${workspaceFolder}", //the path of the folder opened in VS Code, can be replaced by real path, such as: "D:\\Projects\\Cnblogs\\Alpha Panda"
"remoteRoot": "~/demo" // Linux example; adjust as necessary for your OS and situation. } ] },
這裏有兩點須要注意:
遠端腳本添加以下代碼:
import ptvsd host = "1.2.3.4" # remote host ip port = 12345 # remote host valid port ptvsd.enable_attach(address=(host, port), redirect_output=True) ptvsd.wait_for_attach()
因爲remote debug要求本地和遠端程序的源代碼必須一致,所以
本地腳本添加以下代碼:
# import ptvsd # host = "1.2.3.4" # remote host ip # port = 12345 # remote host valid port # ptvsd.enable_attach(address=(host, port), redirect_output=True) # ptvsd.wait_for_attach()
此外,本地和遠端都須要安裝ptvsd模塊。
這樣啓動遠端的腳本程序,本地vscode添加斷點,啓用新加的Python: Remote Debug模式debug便可進入調試環境。
本地能夠經過ptvsd來啓動遠端的程序:
python -m ptvsd --host 1.2.3.4 --port 12345 --wait -m myproject
通過上面操做,Debug 配置中有兩種debug模式:
python插件默認會提供幾種不一樣的debug configs.
如Python: Django,Python: Flask等能夠參考一下。
只有上面兩種無法直接調試vscode中的文件,下面添加本地的debug 模式的配置:
{ "name": "Python: Current File (Integrated Terminal)", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" },
總之,vscode不管出身仍是功能以及美觀簡單易用性等都是無可挑剔的,常常使用sublime text的話,能夠嘗試一下vscode.
若是使用Pycharm進行python開發能夠參考一下個人另外一篇博文:Pycharm遠程調試原理及配置
參考:
https://code.visualstudio.com/docs/python/debugging
https://code.visualstudio.com/docs/editor/variables-reference