iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
3
Software Development

這次我們不跳過 IDE系列 第 12

Day 12: 總是被忽視的功能:debugging(二)

前言

接續討論 debugging,今天來分析 launch.json 的組成。

預設結構

首先,來看看啟動偵錯模式後,vs code 預設的 launch.json 的內容:

{
  // 使用 IntelliSense 以得知可用的屬性。
  // 暫留以檢視現有屬性的描述。
  // 如需詳細資訊,請瀏覽: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "啟動程式",
      "program": "${workspaceFolder}/samples/node/hello/app.js"
    }
  ]
}

結構的組成,以 configurations 為主,這是一個陣列,可以放置不同的偵錯項目。

configurations內的物件,其屬性為偵錯的相關設定:

  • type:執行偵錯的語言,例如:nodechromegocppdbgRuby
  • request:啟動 launch.json的方式,只有兩種。
    • attach
      • 類似使用 devTool 進行偵錯的狀態,先啟動瀏覽器後,再將 devTools 附著(attach)上去。
      • 同理可證。先啟動程式後,才將偵錯的模組附著(attach)在程式上。
      • 因此可想成,適用於開發的程式碼屬於 client 端。
    • launch
      • 藉由 launch.json 啟動(launch)程式後,偵錯將會自動附著在剛啟動的程式內。
      • 因此可想成,適用於開發的程式碼屬於 server 端。
  • name:選擇要執行哪一個偵錯項目時,顯示的名稱。
    • debug name 1
    • debug name 2
  • program:啟動偵錯時,要執行程式(需要填寫路徑)。

接著,來了解如何修改 configurations

新增偵錯項目

開啟 launch.json 後,注意畫面的右下角

debug config 1

點擊後會跑出選單,提供目前有支援的偵錯內容。

debug config 2

如果沒有自己需要的語言,記得去 extension 找尋語言包。

偵錯的相關設定

強制性項目

項目 功能
type 如上所述。
request 如上所述。
name 如上所述。

所有偵錯種類的的選擇性項目

屬性 功能
preLaunchTask 啟動偵錯,執行 task。必須設定 tasks.json才能配合。
postDebugTask 啟動偵錯前,執行 task。必須設定 tasks.json才能配合。
internalConsoleOptions 啟動偵錯時,是否要開啟偵錯主控台。
debugServer 啟動偵錯模式時,連接至另一個 port。
serverReadyAction 給 web 開發用。先啟動 server 端的偵錯,接著,使用瀏覽器開啟網頁時,將會觸發偵錯。

部分偵錯種類的的選擇性項目

屬性 功能
program 如上所述。
args 傳遞給 program 的參數,好啟動偵錯。
env 環境變數。
cwd 執行工作目錄的絕對路徑。
port 附加到執行程式的 port。
stopOnEntry 啟動偵錯後,在第一行程式碼執行中斷點。
console 決定使用哪種主控台( console)。

使用不同作業系統的對應方式

屬性 功能
windows 當作業系統是 Windows 時,執行以下選項。
linux 當作業系統是 Linux 時,執行以下選項。
osx 當作業系統是 macOS 時,執行以下選項。

結論

說實在的,這部分的設定繁雜,即使了解相關項目的功能,也不敢保證能完全上手。

因此要熟悉使用偵錯功能,方法如同寫程式的老話:

學習寫程式的方法就是去寫程式。
學習寫偵錯設定的方法就是去寫偵錯設定。


上一篇
Day 11: 總是被忽視的功能:debugging(一)
下一篇
Day 13: 試著自動化處理 tasks
系列文
這次我們不跳過 IDE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Ho.Chun
iT邦新手 5 級 ‧ 2021-05-01 10:31:39

請問如果我有一段指令 ex. php -S localhost:8000 -t public
這也可以用於 launch.json

我要留言

立即登入留言