TGViewer
Happy Devops — сообщество адекватных инженеров Happy Devops — сообщество адекватных инженеров @happy_devops · 1.81K subscribers
Post #668 789
Debug Adapter Protocol: включаем универсальный режим отладки 🎯

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

Разработчики умеют писать крутой код, но часто спотыкаются на банальной отладке. И не потому, что руки не из того места — просто каждая IDE и язык программирования приходят со своим отладчиком. А переучиваться никто не любит. Особенно когда приходится жонглировать между несколькими проектами на разных языках.

DAP (Debug Adapter Protocol) решает эту головоломку раз и навсегда. Представьте: один протокол, который работает с любым отладчиком, в любой IDE. VS Code, Eclipse, Atom или вообще свой редактор — без разницы. И это не просто красивые слова — DAP внедряют даже консервативные компании, которые обычно не спешат с новыми технологиями.

// Пример конфигурации DAP в VS Code
{
"type": "node",
"request": "launch",
"name": "Debug Node.js",
"program": "${workspaceFolder}/app.js",
"skipFiles": [
"<node_internals>/**"
],
"resolveSourceMapLocations": [
"${workspaceFolder}/**",
"!**/node_modules/**"
]
}


DAP общается с отладчиком через JSON-RPC. Звучит сложно, но на деле упрощает жизнь. Хотите точки останова в TypeScript? Или может пошаговую отладку Python? DAP справится с обоими случаями без дополнительной настройки. Протокол поддерживает все стандартные функции отладки: пошаговое выполнение, условные брейкпоинты, просмотр переменных и выражений.

# Базовый обработчик событий DAP
async def handle_initialize(self, args):
response = {
# Поддержка подтверждения завершения настройки
"supportsConfigurationDoneRequest": True,
# Показ значений при наведении мыши
"supportsEvaluateForHovers": True,
# Отключаем откат на шаг назад при отладке
"supportsStepBack": False,
# Разрешаем менять значения переменных на лету
"supportsSetVariable": True,
# Поддержка перезапуска отладочной сессии
"supportsRestartRequest": True,
# Информация о загруженных модулях
"supportsModulesRequest": True,
# Возможность прервать отлаживаемый процесс
"supportTerminateDebuggee": True,
# Отложенная загрузка стека вызовов
"supportsDelayedStackTraceLoading": True
}
return response


На практике эти флаги определяют, какие фичи доступны в вашем отладчике. Например, supportsSetVariable позволит менять значения переменных прямо во время отладки — незаменимо для проверки граничных случаев. А supportsDelayedStackTraceLoading оптимизирует работу с большими проектами, подгружая информацию о стеке вызовов по мере необходимости.

И самое приятное — DAP становится стандартом де-факто. Microsoft, JetBrains, Amazon — все крупные игроки его поддерживают. Даже такие специфические инструменты как удаленная отладка контейнеров или отладка встраиваемых систем постепенно переходят на DAP. А для разработчиков это значит меньше времени на настройку окружения и больше времени на написание кода.

PS Для тех, кто не знал: у нас есть бот для обратной связи @HDFeedBackBot Туда можно задать свои вопросы, например на тему технологий или аспектов нашей работы, про которые вы хотите увидеть пост. В нашей редакции работают крутые инженеры и мы обязательно разберемся и что-нибудь напишем

🏴‍☠️ @happy_devops
microsoft.github.io Official page for Debug Adapter Protocol Debug Adapter Protocol documentation and specification page.
  • 👍 1
More from @happy_devops
  1. Nov 28, 2025⚡ Совместный карьерный митап от Звук и self, сообщества для поддержки айтишников. Как стро…
  2. May 29, 2025🔥 База знаний тимлида: как въехать в процессы быстро и безболезненно! Подкаст Виктор Коре…
  3. Apr 16, 2025Дорогие друзья, уже на следующей неделе, 23 апреля в Амфитеатре Санкт-Петербургского конгр…
  4. Mar 28, 2025Eventual Consistency: когда доступность важнее мгновенной согласованности Eventual consist…
  5. Mar 26, 2025Гонка за новым функционалом не должна превращать систему в «хрупкого гиганта». SRE-практик…
  6. Mar 19, 2025Strong Consistency: между производительностью и надежностью данных Strong consistency — кл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →