VSCode中通過launch.json文件打斷點(diǎn)DeBug調(diào)試代碼詳細(xì)圖文教程
先吐槽
IDE編譯工具調(diào)試代碼是非常重要的,之前使用Pycharm很方便,直接在Configuration中配置參數(shù)就行,見下。使用VSCode進(jìn)行有命令代碼調(diào)試時(shí)相對(duì)麻煩一些,看其它教程沒撤清楚,這里做個(gè)總結(jié),學(xué)者耐心學(xué)習(xí)。
一、調(diào)試代碼
1.1 調(diào)試代碼好處
通過調(diào)試代碼(尤其是在集成開發(fā)環(huán)境(IDE)如 VSCode 中調(diào)試)有很多好處,可以極大提高開發(fā)效率和代碼質(zhì)量。
即時(shí)反饋:你可以立即看到代碼執(zhí)行的結(jié)果,并且可以在代碼運(yùn)行時(shí)檢查變量的值和狀態(tài)。這有助于快速識(shí)別和修復(fù)錯(cuò)誤。
逐步執(zhí)行代碼:可以逐行執(zhí)行代碼,查看每一步的執(zhí)行情況。這對(duì)于理解復(fù)雜邏輯或調(diào)試復(fù)雜的錯(cuò)誤特別有幫助。
設(shè)置斷點(diǎn):你可以在代碼的特定位置設(shè)置斷點(diǎn),程序運(yùn)行到這些位置時(shí)會(huì)暫停。這樣你可以檢查變量和程序狀態(tài),而不必逐步執(zhí)行整個(gè)程序。
檢查變量和表達(dá)式:在斷點(diǎn)處或在代碼執(zhí)行過程中,可以檢查和評(píng)估變量的值和表達(dá)式。這幫助你理解程序的當(dāng)前狀態(tài)和數(shù)據(jù)流。
調(diào)用堆棧:可以查看當(dāng)前調(diào)用堆棧,了解函數(shù)調(diào)用的順序和上下文。這樣你可以更容易地找到函數(shù)調(diào)用中的問題。
條件斷點(diǎn):可以設(shè)置條件斷點(diǎn),即只有在滿足特定條件時(shí)程序才會(huì)暫停。這對(duì)于調(diào)試特定輸入或特定情況下的問題非常有用。
異常處理:可以在程序拋出異常時(shí)自動(dòng)暫停,這樣你可以在問題發(fā)生的第一時(shí)間檢查程序狀態(tài)和變量值,從而快速找到問題根源。
提高代碼理解和維護(hù):調(diào)試代碼有助于更好地理解代碼的邏輯和行為,這對(duì)于以后維護(hù)和擴(kuò)展代碼非常重要。
省時(shí)省力:通過調(diào)試工具,可以大大減少試圖通過打印語(yǔ)句來追蹤問題的時(shí)間和精力。調(diào)試工具提供了更直觀和更強(qiáng)大的方法來診斷和修復(fù)問題。
1.2 示例場(chǎng)景
比如,在調(diào)試一個(gè)復(fù)雜的深度學(xué)習(xí)訓(xùn)練腳本時(shí):
斷點(diǎn):你可以在數(shù)據(jù)加載、模型前向傳播、損失計(jì)算等關(guān)鍵步驟設(shè)置斷點(diǎn)。
檢查數(shù)據(jù):在斷點(diǎn)處檢查輸入數(shù)據(jù)的形狀和內(nèi)容,確保數(shù)據(jù)正確加載和預(yù)處理。
調(diào)試損失計(jì)算:逐步執(zhí)行損失計(jì)算部分,檢查每一步的中間結(jié)果,確保損失值計(jì)算正確。
驗(yàn)證模型輸出:在訓(xùn)練的不同階段暫停,檢查模型的輸出,確保模型按照預(yù)期進(jìn)行訓(xùn)練。
二、生成launch.json文件
launch.json 文件配置了一個(gè)調(diào)試會(huì)話,用于調(diào)試 train.py 腳本,傳遞了多個(gè)命令行參數(shù),并設(shè)置了必要的環(huán)境變量。通過這種配置,你可以在 VSCode 中啟動(dòng)并調(diào)試你的訓(xùn)練腳本,并方便地設(shè)置斷點(diǎn)、檢查變量等。
2.1 打開項(xiàng)目文件夾
在 VSCode 中打開包含你的項(xiàng)目文件的文件夾。
2.2 創(chuàng)建launch.json文件
點(diǎn)擊左側(cè)活動(dòng)欄中的“運(yùn)行和調(diào)試”圖標(biāo)(或者按 Ctrl+Shift+D)。
點(diǎn)擊“創(chuàng)建 launch.json 文件”鏈接。如果已經(jīng)存在 launch.json 文件,則直接編輯它。
選擇“Python”作為環(huán)境。
添加一個(gè)新配置,類似如下:
2.3 launch.json文件
創(chuàng)建后的launch.json如下:
三、配置launch.json文件
3.1 添加參數(shù)
舉個(gè)例子,我自己要執(zhí)行的腳本為tool/train.py,終端中完整的執(zhí)行命令為:
python tools/train.py --config configs/mobileseg/mobileseg_mobilenetv3_cityscapes_1024x512_80k_deit_12090.yml --save_interval 500 --use_ema --do_eval --use_vdl --save_dir output/Train_Result/INF_MobileNetV3_Only_12090
將上面的執(zhí)行命令添加到launch.json文件中,見下:
3.2 參數(shù)解析
針對(duì)上面launch.json文件內(nèi)容,具體參數(shù)解析見下:
1. version: ○ 這是配置文件的版本號(hào)。VSCode 使用這個(gè)字段來確定配置文件的格式。 2. configurations: ○ 一個(gè)數(shù)組,包含不同的調(diào)試配置。在這個(gè)例子中,只定義了一個(gè)配置。 3. name: ○ 配置的名稱。在 VSCode 中,你可以在調(diào)試配置下拉菜單中看到并選擇這個(gè)名稱。這里是 "Python: train"。 4. type: ○ 調(diào)試器的類型。對(duì)于 Python 調(diào)試,填寫 "python"。 5. request: ○ 調(diào)試請(qǐng)求的類型??梢允?"launch"(啟動(dòng)調(diào)試會(huì)話)或 "attach"(附加到正在運(yùn)行的進(jìn)程)。這里是 "launch",表示啟動(dòng)一個(gè)新的調(diào)試會(huì)話。 6. program: ○ 要運(yùn)行的 Python 腳本的路徑。在這個(gè)例子中,是 ${workspaceFolder}/tools/train.py,其中 ${workspaceFolder} 是 VSCode 工作區(qū)的根目錄。 7. args: ○ 傳遞給 Python 腳本的命令行參數(shù)。這里傳遞了幾個(gè)參數(shù): --config:指定配置文件路徑。 --save_interval:保存間隔。 --use_ema:使用 EMA。 --do_eval:執(zhí)行評(píng)估。 --use_vdl:使用 VDL。 --save_dir:指定保存目錄。 8. console: ○ 指定調(diào)試控制臺(tái)的類型??梢允?"integratedTerminal"(集成終端)、"externalTerminal"(外部終端)等。這里是 "integratedTerminal",表示在 VSCode 集成終端中運(yùn)行腳本。 9. env: ○ 指定環(huán)境變量。這里設(shè)置了 PYTHONPATH 環(huán)境變量,值為 ${workspaceFolder}:${workspaceFolder}/tools,確保 Python 可以找到相關(guān)的模塊和包。
上面舉例中的args參數(shù)是我自己的參數(shù),學(xué)者參考替換為自己的執(zhí)行命令參數(shù)。
四、斷點(diǎn)調(diào)試測(cè)試
在待執(zhí)行的腳本中先打好斷點(diǎn):
選中待執(zhí)行腳本,在運(yùn)行選項(xiàng)中啟動(dòng)調(diào)試:
下面是啟動(dòng)調(diào)試后跳到斷點(diǎn)位置,各個(gè)變量參數(shù)信息都在左側(cè)欄,見下:
后續(xù)點(diǎn)擊單步調(diào)試或其它按鈕就可以正常調(diào)試代碼了。
五、總結(jié)
以上就是VSCode中通過launch.json文件打斷點(diǎn)DeBug調(diào)試代碼的詳細(xì)過程,學(xué)者參考博文中例子結(jié)合自己的情況生成launch.json文件后調(diào)試。
到此這篇關(guān)于VSCode中通過launch.json文件打斷點(diǎn)DeBug調(diào)試代碼詳細(xì)圖文教程的文章就介紹到這了,更多相關(guān)VSCode launch.json文件打斷點(diǎn)調(diào)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual?Studio實(shí)用調(diào)試技巧大全
這篇文章主要給大家介紹了關(guān)于Visual?Studio實(shí)用調(diào)試技巧的相關(guān)資料,如果你還沒有使用過這些技巧,希望這篇博文能幫你發(fā)現(xiàn)它們,它們學(xué)起來很容易,能幫你節(jié)省很多時(shí)間,需要的朋友可以參考下2023-06-06瀏覽器緩存知識(shí)小結(jié)及應(yīng)用分析
了解瀏覽器的緩存命中原理,是開發(fā)web應(yīng)用的基礎(chǔ),本文著眼于此,學(xué)習(xí)瀏覽器緩存的相關(guān)知識(shí),總結(jié)緩存避免和緩存管理的方法,結(jié)合具體的場(chǎng)景說明緩存的相關(guān)問題。希望能對(duì)有需要的人有所幫助2017-03-03Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)
這篇文章主要介紹了Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12