Skip to content

Bun 支持 WebKit Inspector Protocol。要在使用 Bun 運行代碼時啟用調試,請使用 --inspect 標志。為了演示目的,請考慮以下簡單的 Web 服務器。

ts
Bun.serve({
  fetch(req) {
    console.log(req.url);
    return new Response("Hello, world!");
  },
});

讓我們使用 --inspect 標志運行此文件。

這會自動在可用端口上啟動 WebSocket 服務器,該服務器可用於檢查正在運行的 Bun 進程。各種調試工具可以連接到此服務器以提供交互式調試體驗。

Bun 在 debug.bun.sh 提供基於 Web 的調試器。它是 WebKit 的 Web Inspector Interface 的修改版本,Safari 用戶會對此感到熟悉。

sh
bun --inspect server.ts
txt
------------------ Bun Inspector ------------------
Listening at:
  ws://localhost:6499/0tqxs9exrgrm

Inspect in browser:
  https://debug.bun.sh/#localhost:6499/0tqxs9exrgrm
------------------ Bun Inspector ------------------

在瀏覽器中打開提供的 debug.bun.sh URL 以開始調試會話。從此界面,你可以查看運行文件的源代碼、查看和設置斷點,並使用內置控制台執行代碼。


讓我們設置一個斷點。導航到 Sources 選項卡;你應該會看到前面的代碼。點擊行號 3 在我們的 console.log(req.url) 語句上設置斷點。


然後在 Web 瀏覽器中訪問 http://localhost:3000。這將向我們的 localhost Web 服務器發送 HTTP 請求。頁面似乎沒有加載。為什麼?因為程序在我們之前設置的斷點處暫停了執行。

注意 UI 是如何變化的。


此時,我們可以做很多事情來檢查當前的執行環境。我們可以使用底部的控制台在程序的上下文中運行任意代碼,完全訪問斷點處作用域內的變量。


在 Sources 窗格的右側,我們可以看到當前作用域內的所有局部變量,並深入查看它們的屬性和方法。這裡,我們正在檢查 req 變量。


在 Sources 窗格的左上角,我們可以控制程序的執行。


以下是解釋控制流按鈕功能的速查表。

  • 繼續腳本執行 — 繼續運行程序直到下一個斷點或異常。
  • 單步跳過 — 程序將繼續到下一行。
  • 單步進入 — 如果當前語句包含函數調用,調試器將"進入"被調用的函數。
  • 單步跳出 — 如果當前語句是函數調用,調試器將完成該調用的執行,然後從函數"跳出"到調用它的位置。

Bun學習網由www.bunjs.com.cn整理維護