現已釋出!閱讀關於 11 月新增功能和修復的內容。

除錯容器化應用

Container Tools 擴充套件為在容器內除錯應用程式提供了更多支援,例如為將偵錯程式附加到在容器中執行的應用程式生成 launch.json 配置。

Container Tools 擴充套件提供了一個 docker 除錯配置提供程式,該程式管理 VS Code 如何啟動應用程式和/或將偵錯程式附加到正在執行的容器中的應用程式。此提供程式透過 launch.json 中的條目進行配置,配置特定於提供程式支援的每個應用程式平臺。

Container Tools 擴充套件目前支援在容器內除錯 Node.jsPython.NET 應用程式。

要求

生成或貼上啟動配置到 launch.json不足以構建和除錯容器。要成功執行容器啟動配置,您必須擁有

  • Dockerfile。
  • tasks.json 中的 docker-builddocker-run 任務。
  • 呼叫這些任務的啟動配置。

我們建議使用Containers: Add Docker Files to Workspace... 命令來建立這些項,如果這些資產尚不存在。如果您已經有一個功能性的 Dockerfile,我們建議使用Containers: Initialize for container debugging 命令來生成啟動配置和與容器相關的任務。

Node.js

有關在容器內除錯 Node.js 應用程式的更多資訊,請參閱 在容器內除錯 Node.js

用於除錯 Node.js 應用程式的示例 launch.json 配置

{
  "configurations": [
    {
      "name": "Containers: Node.js Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "platform": "node"
    }
  ]
}

Python

有關在容器內除錯 Python 應用程式的更多資訊,請參閱 在容器內除錯 Python

用於除錯 Python 應用程式的示例 launch.json 配置

{
  "configurations": [
    {
      "name": "Containers: Python - Django",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "python": {
        "pathMappings": [
          {
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/app"
          }
        ],
        "projectType": "django"
      }
    }
  ]
}

.NET

您可以在容器內選擇兩種構建和除錯專案的方式

  • 使用 .NET SDK:如果您熟悉 MSBuild 或想在沒有 Dockerfile 的情況下容器化您的專案,這是推薦的選擇。

    注意:此選項僅適用於 .NET SDK 7 及更高版本,並使用 dotnet publish 命令構建映象。

  • 使用 Dockerfile:如果您希望使用 Dockerfile 自定義您的專案,請選擇此選項。

有關這兩種選項的更多詳細資訊,請參閱 在容器內除錯 .NET

使用 Dockerfile 除錯 .NET 應用程式的示例 launch.json 配置

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Containers: .NET Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "Run Container",
      "netCore": {
        "appProject": "${workspaceFolder}/project.csproj"
      }
    }
  ]
}

配置參考

屬性 描述
containerName 用於除錯的容器名稱。
dockerServerReadyAction 將瀏覽器啟動到容器的選項。類似於 serverReadyAction,但用主機埠替換容器埠。
removeContainerAfterDebug 除錯後是否刪除除錯容器。
platform 應用程式的目標平臺。可以是 netCorenode
netCore 在容器中除錯 .NET 專案的選項。
node 在容器中除錯 Node.js 專案的選項。
python 在容器中除錯 Python 專案的選項。

dockerServerReadyAction 物件屬性

屬性 描述
action 找到模式時要執行的操作。可以是 debugWithChromeopenExternally
containerName 要匹配主機埠的容器名稱。
pattern 要在除錯控制檯輸出中查詢的正則表示式模式。
uriFormat 要啟動的 URI 格式。
webRoot 提供網頁的根資料夾。僅當 action 設定為 debugWithChrome 時使用。

node 物件屬性

這些屬性與 VS Code 文件中關於將偵錯程式附加到 Node.js 應用程式的 描述相同。傳遞到 node 物件的所有屬性都將傳遞給 Node.js 除錯介面卡,即使未在此處單獨列出。

屬性 描述 預設值
port 可選。要使用的除錯埠。 9229
address 可選。除錯埠的 TCP/IP 地址。
sourceMaps 可選。透過將其設定為 true 來啟用源對映。
outFiles 可選。用於定位生成的 JavaScript 檔案的 glob 模式陣列。
autoAttachChildProcesses 可選。跟蹤除錯目標的全部子程序,並自動附加到以除錯模式啟動的子程序。
timeout 可選。重啟會話時,在此毫秒數後放棄。
stopOnEntry 可選。程式啟動時立即中斷。
localRoot 可選。VS Code 的根目錄。 根工作區資料夾。
remoteRoot 可選。Node 在容器內的根目錄。 /usr/src/app
smartStep 可選。嘗試自動跳過不對映到原始檔的程式碼。
skipFiles 可選。自動跳過由這些 glob 模式覆蓋的檔案。
trace 可選。啟用診斷輸出。

python 物件屬性

屬性 描述 預設值
host 遠端除錯的主機。
port 遠端除錯的埠。 5678
pathMappings 對映本地計算機和遠端主機之間的專案路徑。
projectType 您的 Python 專案型別,Flask 專案為 flask,Django 專案為 django,FastAPI 專案為 fastapi,其他專案為 general。專案型別將用於設定除錯的埠和命令。
justMyCode 僅除錯使用者編寫的程式碼。
django Django 除錯。 false
jinja Jinja 模板除錯(例如 Flask)。 false

netCore 物件屬性

通常,傳遞給 netCore 物件的屬性會傳遞給 .NET 除錯介面卡,即使未在此處單獨列出。完整的偵錯程式屬性列表請參閱 OmniSharp VS Code 擴充套件文件

屬性 描述
appProject 要除錯的 .NET 專案(.csproj、.fsproj 等)。

後續步驟

繼續閱讀以瞭解更多資訊

© . This site is unofficial and not affiliated with Microsoft.