這篇文章將為大家詳細(xì)講解有關(guān)怎么用VScode代碼調(diào)試Python,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元定興做網(wǎng)站,已為上家服務(wù),為定興各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
觀看窗口
評(píng)估表達(dá)式
當(dāng)?shù)厝?/p>
參數(shù)
擴(kuò)大孩子
斷點(diǎn)
條件斷點(diǎn)
暫停(進(jìn)入)正在運(yùn)行的程序
自定義啟動(dòng)目錄
要熟悉這些常規(guī)功能,請(qǐng)查看VS Code調(diào)試文章。本文僅討論那些特定于Python的注意事項(xiàng)。
要選擇調(diào)試配置,請(qǐng)選擇邊欄中的調(diào)試視圖,然后從下拉列表中選擇一個(gè)選項(xiàng):

在調(diào)試時(shí),狀態(tài)欄顯示左下角的當(dāng)前配置,當(dāng)前的調(diào)試解釋器位于右側(cè)。選擇配置會(huì)顯示列表,您可以從中選擇不同的配置:

默認(rèn)情況下,調(diào)試器使用與python.pythonPathVS Code其他功能相同的設(shè)置。要使用不同的解釋器,請(qǐng)pythonPath在調(diào)試器設(shè)置中設(shè)置該值。或者,在狀態(tài)欄上選擇指定的解釋器以選擇不同的解釋器。
注:調(diào)試器設(shè)置不支持相對(duì)路徑,包括依賴主
python.pythonPath設(shè)置時(shí)。要解決此問題,請(qǐng)使用環(huán)境變量,或者創(chuàng)建一個(gè)變量,例如${workspaceFolder}解析到您的項(xiàng)目文件夾,然后在該路徑中使用該變量,如in"python.pythonPath": "${workspaceFolder}/venv/bin/python"。
要查看所有配置,請(qǐng)launch.json通過選擇配置下拉列表旁邊的齒輪圖標(biāo)打開:

下一節(jié)將介紹默認(rèn)或標(biāo)準(zhǔn)的“Python:當(dāng)前文件”配置。本文還介紹了調(diào)試特定應(yīng)用程序類型下的其他配置。
注意:如果您想嘗試新的實(shí)驗(yàn)性調(diào)試器,請(qǐng)參閱Issue 538(GitHub)上的說明。
標(biāo)準(zhǔn)配置為launch.json:
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
}以下各節(jié)介紹各種設(shè)置的自定義配置。
name提供出現(xiàn)在VS Code下拉列表中的調(diào)試配置的名稱。
type標(biāo)識(shí)要使用的調(diào)試器的類型; 將此設(shè)置留給pythonPython代碼。
request指定開始調(diào)試的模式:
launch:在中指定的文件上啟動(dòng)調(diào)試器 program
attach:將調(diào)試器附加到已經(jīng)運(yùn)行的進(jìn)程。有關(guān)示例,請(qǐng)參閱遠(yuǎn)程調(diào)試。
program提供python程序入口模塊的完全限定路徑。推薦值為${file},它使用編輯器中的活動(dòng)文件。但是,對(duì)于具有多個(gè)文件的程序,您可以指定程序的啟動(dòng)文件。例如:
"program": "/Users/Me/Projects/PokemonGo-Bot/pokemongo_bot/event_handlers/__init__.py",
您還可以依賴工作區(qū)根目錄中的相對(duì)路徑。例如,如果根是/Users/Me/Projects/PokemonGo-Bot那么你可以使用以下內(nèi)容:
"program": "${workspaceFolder}/pokemongo_bot/event_handlers/__init__.py",pythonPath指向Python解釋器用于調(diào)試目的。如果未指定,則默認(rèn)為python.pythonPath設(shè)置中標(biāo)識(shí)的解釋器,這相當(dāng)于使用該值${config:python.pythonPath}。要使用不同的解釋器,請(qǐng)改為指定其路徑。
您可以通過將指定特定于平臺(tái)的路徑pythonPath命名的父對(duì)象中osx,windows或者linux。例如,PySpark的配置使用以下值:
"osx": {
"pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit\""
},
"windows": {
"pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit.cmd\""
},
"linux": {
"pythonPath": "^\"\\${env:SPARK_HOME}/bin/spark-submit\""
},args指定傳遞給Python程序的參數(shù),例如:
"args": [ "--quiet", "--norepeat" ],
stopOnEntry設(shè)置為true時(shí),在調(diào)試程序的第一行中斷開調(diào)試器。如果省略(默認(rèn))或設(shè)置為false,則調(diào)試器將程序運(yùn)行到第一個(gè)斷點(diǎn)。
console指定如何顯示程序輸出。
| 值 | 顯示輸出的地方 |
|---|---|
"none" | VS代碼調(diào)試控制臺(tái) |
"integratedTerminal" (默認(rèn)) | VS代碼集成終端 |
"externalTerminal" | 獨(dú)立控制臺(tái)窗口 |
cwd指定調(diào)試器的當(dāng)前工作目錄,它是代碼中使用的任何相對(duì)路徑的基礎(chǔ)文件夾。如果省略,默認(rèn)為${workspaceFolder}(在VS代碼中打開的文件夾)。
作為一個(gè)例子,說${workspaceFolder}包含一個(gè)py_code文件夾包含app.py,和一個(gè)data文件夾包含salaries.csv。如果啟動(dòng)調(diào)試器py_code/app.py,則數(shù)據(jù)文件的相對(duì)路徑根據(jù)以下值而變化cwd:
| CWD | 數(shù)據(jù)文件的相對(duì)路徑 |
|---|---|
省略或 ${workspaceFolder} | data/salaries.csv |
${workspaceFolder}/py_code) | ../data/salaries.csv |
${workspaceFolder}/data | salaries.csv |
debugOptions一系列可能包含以下內(nèi)容的附加選項(xiàng):
| 選項(xiàng) | 描述 |
|---|---|
"RedirectOutput"(默認(rèn)) | 使調(diào)試器將程序的所有輸出打印到VS Code調(diào)試輸出窗口中。如果省略此設(shè)置,則所有程序輸出不顯示在調(diào)試器輸出窗口中。該選項(xiàng)在使用時(shí)通常會(huì)被省略,"console": "integratedTerminal"或者"console": "externalTerminal"因?yàn)椴恍枰谡{(diào)試控制臺(tái)中復(fù)制輸出。 |
"DebugStdLib" | 啟用標(biāo)準(zhǔn)庫函數(shù)的調(diào)試。 |
"Django" | 激活特定于Django Web框架的調(diào)試功能。 |
"Sudo" | 與...一起使用時(shí)"console": "externalTerminal",允許調(diào)試需要提升的應(yīng)用程序。捕獲密碼需要使用外部控制臺(tái)。 |
"Pyramid" | 在調(diào)試金字塔應(yīng)用程序時(shí)使用。 |
env為除調(diào)試器始終繼承的系統(tǒng)環(huán)境變量之外的調(diào)試器進(jìn)程設(shè)置可選的環(huán)境變量。
envFile包含環(huán)境變量定義的文件的可選路徑。請(qǐng)參閱配置Python環(huán)境 - 環(huán)境變量定義文件。
配置下拉菜單為常規(guī)應(yīng)用程序類型提供了各種不同的選項(xiàng):
| 組態(tài) | 描述 |
|---|---|
| PySpark | 使用PySpark而不是默認(rèn)解釋器運(yùn)行程序,使用pythonPath前面在pythonPath選項(xiàng)下顯示的特定于平臺(tái)的值。 |
| Python模塊 | 替換program設(shè)置"module": "module.name"以調(diào)試特定模塊。使用此配置時(shí),請(qǐng)將該值替換為所需的模塊名稱。 |
| 集成終端/控制臺(tái) | 將"console": "integratedTerminal"選項(xiàng)添加到標(biāo)準(zhǔn)配置。 |
| 外部終端/控制臺(tái) | 將"console": "externalTerminal"選項(xiàng)添加到標(biāo)準(zhǔn)配置。 |
| Django的 | 指定"program": "${workspaceFolder}/manage.py"并"args": ["runserver", "--noreload", "--nothreading"]添加“Django”和“RedirectOutput” debugOptions。請(qǐng)注意,在調(diào)試時(shí)不能自動(dòng)重新加載Django應(yīng)用程序。要調(diào)試Django HTML模板,請(qǐng)?zhí)砑訑帱c(diǎn)templates。 |
| 燒瓶 | 請(qǐng)參閱下面的Flask調(diào)試。 |
| 金字塔 | 刪除program,添加"args": ["${workspaceFolder}/development.ini"]并添加“金字塔”和“重定向輸出” debugOptions。 |
| 沃森 | 指定"program": "${workspaceFolder}/console.py"和"args": ["dev", "runserver", "--noreload=True"] |
| Scrapy | 指定"program": "~/.virtualenvs/scrapy/bin/scrapy",添加"console": "integratedTerminal"選項(xiàng)并添加"args": ["crawl", "specs", "-o", "bikes.json"]。 |
| 附加(遠(yuǎn)程調(diào)試) | 請(qǐng)參閱以下遠(yuǎn)程調(diào)試。 |
遠(yuǎn)程調(diào)試和Google App Engine還需要具體步驟。有關(guān)調(diào)試單元測試(包括nosetest)的詳細(xì)信息,請(qǐng)參閱單元測試。
要調(diào)試需要管理員權(quán)限的應(yīng)用程序,請(qǐng)?jiān)谥惺褂?code>"console": "externalTerminal"并包含“Sudo” debugOptions。
{
"name": "Flask",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"module": "flask",
"cwd": "${workspaceFolder}",
"env": {
"FLASK_APP": "${workspaceFolder}/app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
]
},正如你所看到的,這個(gè)配置指定"stopOnEntry": false,"env": {"FLASK_APP": "${workspaceFolder}/app.py"}和"args": ["run", "--no-debugger","--no-reload"]。該"module": "flask"屬性被用來代替program。
遠(yuǎn)程調(diào)試允許您在VS代碼本地執(zhí)行一個(gè)程序,同時(shí)在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行它。在這種情況下,必須在兩臺(tái)計(jì)算機(jī)上都有源代碼。
在開發(fā)和遠(yuǎn)程計(jì)算機(jī)上,安裝ptvsd 3.0.0(3.0.0 完全版本- 更高版本尚不支持#514)。
在兩臺(tái)計(jì)算機(jī)的源代碼中,添加以下行,用適當(dāng)?shù)拿艽a替換_my_secret_以驗(yàn)證遠(yuǎn)程調(diào)試,并用合適的IP地址(或)和端口號(hào)替換_地址_localhost:
import ptvsd
ptvsd.enable_attach("my_secret", address = ('0.0.0.0', 3000))
# Enable the line of source code below only if you want the application to wait until the debugger has attached to it
#ptvsd.wait_for_attach()僅在遠(yuǎn)程計(jì)算機(jī)上,取消注釋上面的最后一行。您希望在開發(fā)機(jī)器上保留注釋行,以確保兩臺(tái)機(jī)器上的源代碼與行符合。
啟動(dòng)遠(yuǎn)程程序。
選擇附加(遠(yuǎn)程調(diào)試)(下面)配置,然后修改remoteRoot為指向該程序的遠(yuǎn)程計(jì)算機(jī)上的位置,并修改host,port以及secret在上面添加的源代碼中的值匹配。
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}",
"port": 3000,
"secret": "my_secret",
"host": "localhost"
}通過SSH進(jìn)行調(diào)試
視窗:
使用sshd_config或類似命令在遠(yuǎn)程計(jì)算機(jī)上啟用ssh端口轉(zhuǎn)發(fā)。
建立一個(gè)PuTTY SSH隧道:
閱讀使用PuTTY設(shè)置SSH隧道(直到“打開會(huì)話”部分)。
在“隧道”屏幕上,使用本地模式,源端口(本地計(jì)算機(jī)上的入口點(diǎn)端口)可能與目標(biāo)端口(服務(wù)器上的端點(diǎn))不同。
目標(biāo)地址應(yīng)該是本地主機(jī)或127.0.0.1地址(這是遠(yuǎn)程SSH服務(wù)器用于建立隧道的地址)。
Linux的:
跑 ssh -L sourceport:localhost:destinationport user@remoteaddress
接下來,驗(yàn)證您可以在SSH會(huì)話中看到提示。然后打開VS Code并將端口配置為顯示在Tunnels屏幕上的調(diào)試端口。
最后,啟動(dòng)程序并按照上一節(jié)所述附加調(diào)試器。
Google App Engine自己啟動(dòng)一個(gè)應(yīng)用程序,因此在VS Code調(diào)試器中啟動(dòng)它不是直接可能的。相反,我們需要在應(yīng)用中使用ptvsd,然后以允許VS Code附加其調(diào)試器的模式啟動(dòng)Google App Engine。

下載ptvsd并將其文件解壓縮到工作文件夾中的ptvsd文件夾中。(如果使用不同的文件夾,請(qǐng)修改pydev_startup.py步驟4中創(chuàng)建的文件中的路徑)。
tasks.json使用以下內(nèi)容創(chuàng)建一個(gè)文件:
{
"version": "2.0.0",
"tasks": [
{
"label": "Launch Google App Engine",
"command": "python",
"type": "shell",
"args": [
"/usr/local/google_appengine/dev_appserver.py",
"--python_startup_script=${workspaceFolder}/pydev_startup.py",
"--automatic_restart=no",
"--max_module_instances=default:1",
"${workspaceFolder}/app.yaml"
]
}
]
}在Windows和Linux上,將第一項(xiàng)內(nèi)容替換args為安裝Google App Engine的路徑(上面的源代碼中顯示的路徑適用于MacOS)。
在您的項(xiàng)目根目錄下創(chuàng)建一個(gè)名為pydev_startup.py的文件,其中包含以下內(nèi)容,并按照說明修改:
import sys
import os
#Assuming that pdvsd is located in the working folder
sys.path.append(os.getcwd())
import ptvsd
# Modify the secret and port number as desired; you're debugging locally so the values don't matter.
# However, be sure the port is not blocked on your computer.
ptvsd.enable_attach(secret = 'gae', address = ('0.0.0.0', 3000))
#The debug server has started and you can now use VS Code to attach to the application for debugging
print("Google App Engine has started, ready to attach the debugger")launch.json使用Attach(遠(yuǎn)程調(diào)試)配置作為模板創(chuàng)建配置。確保秘密和端口值與上面源代碼中的內(nèi)容匹配。
添加"preLaunchTask": "python"到launch.json。
從命令面板中,運(yùn)行“ 運(yùn)行構(gòu)建任務(wù)”命令。這將打開任務(wù)輸出窗口,您可以在其中看到各種消息。
一旦看到消息“Google App Engine已啟動(dòng),準(zhǔn)備好連接調(diào)試器”,請(qǐng)使用遠(yuǎn)程調(diào)試配置啟動(dòng)VS Code調(diào)試器。
在需要的地方設(shè)置斷點(diǎn),然后啟動(dòng)瀏覽器以啟動(dòng)應(yīng)用程序。
調(diào)試器可能無法正常工作的原因很多。調(diào)試控制臺(tái)經(jīng)常會(huì)顯示具體原因,但有兩個(gè)具體原因如下:
python可執(zhí)行文件的路徑不正確:請(qǐng)檢查pythonPath用戶設(shè)置中的值。
觀察窗口中的表達(dá)式無效(請(qǐng)參閱下面的示例):清除Watch窗口中的所有表達(dá)式并重新啟動(dòng)調(diào)試器。
Traceback (most recent call last): File ".../visualstudio_py_debugger.py", line 1646, in loop cmd() File ".../visualstudio_py_debugger.py", line 1918, in command_execute_code thread.run_on_thread(text, cur_frame, eid, frame_kind, repr_kind) File ".../visualstudio_py_debugger.py", line 1246, in run_on_thread self.schedule_work(lambda : self.run_locally(text, cur_frame, execution_id, frame_kind, repr_kind)) File ".../visualstudio_py_debugger.py", line 1238, in schedule_work self.unblock() File ".../visualstudio_py_debugger.py", line 1234, in unblock self._block_lock.release() RuntimeError: release unlocked lock
關(guān)于“怎么用VScode代碼調(diào)試Python”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
網(wǎng)站標(biāo)題:怎么用VScode代碼調(diào)試Python
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article28/jighcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、響應(yīng)式網(wǎng)站、微信公眾號(hào)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)