Skip to content

Bun использует протокол инспектора WebKit. Для включения отладки при запуске кода с Bun используйте флаг --inspect. Для демонстрации рассмотрим следующий простой веб-сервер.

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

Запустим этот файл с флагом --inspect.

Это автоматически запускает WebSocket-сервер на доступном порту, который можно использовать для интроспекции запущенного процесса Bun. Различные инструменты отладки могут подключаться к этому серверу для обеспечения интерактивной отладки.

Bun размещает веб-отладчик на debug.bun.sh. Это модифицированная версия Web Inspector Interface от WebKit, которая будет знакома пользователям Safari.

sh
bun --inspect server.ts
txt
------------------ Bun Inspector ------------------
Прослушивание:
  ws://localhost:6499/0tqxs9exrgrm

Проверка в браузере:
  https://debug.bun.sh/#localhost:6499/0tqxs9exrgrm
------------------ Bun Inspector ------------------

Откройте предоставленный URL debug.bun.sh в браузере для начала сеанса отладки. Из этого интерфейса вы сможете просматривать исходный код запущенного файла, устанавливать точки останова и выполнять код с помощью встроенной консоли.


Установим точку останова. Перейдите на вкладку Sources; вы должны увидеть код из предыдущего примера. Щёлкните на номере строки 3, чтобы установить точку останова на нашем операторе console.log(req.url).


Затем посетите http://localhost:3000 в вашем веб-браузере. Это отправит HTTP-запрос на наш локальный веб-сервер. Будет казаться, что страница не загружается. Почему? Потому что программа приостановила выполнение в точке останова, которую мы установили ранее.

Обратите внимание, как изменился пользовательский интерфейс.


В этот момент мы можем сделать многое для интроспекции текущей среды выполнения. Мы можем использовать консоль внизу для выполнения произвольного кода в контексте программы, с полным доступом к переменным в области видимости в нашей точке останова.


С правой стороны панели Sources мы можем увидеть все локальные переменные, находящиеся в области видимости, и углубиться для просмотра их свойств и методов. Здесь мы инспектируем переменную req.


В верхнем левом углу панели Sources мы можем управлять выполнением программы.


Вот шпаргалка, объясняющая функции кнопок управления потоком.

  • Продолжить выполнение скрипта — продолжить выполнение программы до следующей точки останова или исключения.
  • Step over — программа продолжится до следующей строки.
  • Step into — если текущий оператор содержит вызов функции, отладчик «войдёт» в вызванную функцию.
  • Step out — если текущий оператор является вызовом функции, отладчик завершит выполнение вызова, затем «выйдет» из функции в место, где она была вызвана.

Bun от www.bunjs.com.cn