VSCode中使用Python編程:Debug模式的使用與配置

在使用VSCode進行Python編程的時候,有的時候會需要在debug模式下設(shè)斷點來實時查看程序運行情況。比起直接的print大法,debug模式下有很多方便的地方:

  • 啟動方便。點一下綠色小三角or一個快捷鍵就可以完成啟動,免得切命令行窗口去run。
  • 實時斷點。運行的時候可以隨時添加or刪除斷點。
  • 實時交互式編程。設(shè)置好了斷點之后可以用python下的交互式編程去查看一些變量,或是試運行一些代碼。
  • 查看變量與運行棧。
  • ……

更多debug模式下可以做的事情可以參考官方文檔:

[1] "Debugging,", https://code.visualstudio.com/docs/editor/debugging

一般來講在安裝好python擴展之后,右上角就會有一個run的按鈕。但這個run只能運行當前打開的文件,即當你點擊之后它會自動開啟一個terminal,并且運行如下代碼:

python ${file}

但很多情況下這種方式并不能滿足我們的需要。例如,我們往往并不會運行當前打開的文件,而是一個固定的入口文件(如main.py);并且常常會有一些命令行參數(shù),甚至需要設(shè)置好幾組不同的參數(shù)來交錯運行。

因此我們需要VSCode自帶的Run & Debug模式,并使用launch.json文件來更加細致的設(shè)置具體的運行環(huán)境。

前置:Python擴展的版本問題

當前時間下(本文寫于2022年10月16日),Python擴展的最新版本對VSCode本身的debug模式有一些不支持,會導(dǎo)致點擊運行之后閃退沒有任何的輸出。需要手動改成v2021.12.1559732655。具體步驟如下:

  • 進入到Python擴展的頁面下。
  • 在“Uninstall”旁邊有一個小三角,點開后點擊“Install another version...”。
  • 等一段時間后會讓你選擇版本,選擇v2021.12.1559732655
  • 最好取消掉擴展的“Extensions: Auto Update”。可以使用ctrl+shift+p打開Command Palette,運行Extensions: Disable Auto Update for all extensions。
  • 重啟VSCode。

[2] "VS Code Debugger not working for python," https://learn.microsoft.com/en-us/answers/questions/724858/vscode-debugger-not-working-for-python.html

launch.json的設(shè)置與使用

首先創(chuàng)建一個launch.json文件。

  • 點擊左側(cè)的“Run & Debug”菜單欄,點擊“create a launch.json file”。
  • 會讓你選擇具體的語言。選擇Python,選擇運行當前文件即可。

創(chuàng)建的launch.json文件會存在.vscode文件夾下。設(shè)置好之后,相應(yīng)的Configuration就會出現(xiàn)在“Run & Debug”欄目下,可以直接進行相應(yīng)的debug流程了。

使用json格式來設(shè)置相應(yīng)的字段。具體可以參考官方文檔:

[3] "Python debugging in VS Code," https://code.visualstudio.com/docs/python/debugging

下面是一些常見字段的說明:

  • name:用于標識,隨便起。會顯示在下拉菜單中。
  • program:相當于指示一個入口文件。常見的操作可能是給一個${workspaceFolder}/main.py,即你的工作根目錄下的main.py文件。
  • module:與上面的相似,不過會用-m參數(shù)來運行module。
  • python:指向你的Python interpreter??梢砸源藖韰^(qū)分不同的anaconda環(huán)境;也可以不設(shè)置,在外部設(shè)置相應(yīng)的interpreter。
  • args:傳入的命令行參數(shù),是一個list。
  • console:程序會運行在哪個terminal里面。默認的就很好用。
  • justMyCode:建議設(shè)為false,允許跳至外部代碼。
  • env:一些環(huán)境參數(shù)。例如在訓(xùn)練時指定相應(yīng)的顯卡序號。

給一個我自己的launch.json文件配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "main.py",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/main.py",
      "console": "integratedTerminal",
      "justMyCode": false,
      "args": [
        "--config", "param.ini",
      ],
      "env": {
        "CUDA_VISIBLE_DEVICES": "0",
      },
    },
  ]
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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