Какие способы отладки кода используются?
Что проверяют
Умеете ли вы отлаживать что-то сложнее console.log: брейкпоинты, сеть, состояние компонентов, ошибки в проде. Следом обычно просят рассказать про конкретный трудный баг и как вы его нашли.
Как отвечать
Разложите инструменты по источнику проблемы:
- код в браузере: панель Sources,
debuggerв коде, условные брейкпоинты и logpoints (вывод в консоль без правки кода), остановка на исключениях, стек вызовов и watch-выражения; - специальные брейкпоинты: на изменение DOM-узла, на
fetchи XHR по части URL, на обработчики событий. Выручают, когда непонятно, какой код меняет страницу; - консоль: кроме
console.logестьconsole.table,console.trace,console.timeи фильтр по уровням; - сеть: вкладка Network, статусы, заголовки, тело запроса, троттлинг под медленный мобильный интернет, Local Overrides для подмены ответа сервера;
- состояние: React DevTools или Vue DevTools для пропсов и стора, Profiler с подсветкой лишних рендеров, Redux DevTools для истории экшенов;
- производительность и память: вкладка Performance для long tasks, Heap snapshot для поиска утечки, например неснятого слушателя событий;
- продакшен: source maps и сервис сбора ошибок вроде Sentry с контекстом пользователя и шагами до ошибки;
- SSR и Node-часть:
node --inspectи тот же DevTools или отладчик IDE; - тесты: воспроизвести баг в Vitest или Jest, для сквозных сценариев trace viewer в Playwright.
Завершите своим примером по схеме: симптом, гипотеза, инструмент, найденная причина. Это убеждает сильнее любого списка.
Где спотыкаются
Не знают, что console.log объекта показывает живую ссылку. Объект раскрыли позже и увидели текущее значение, а не то, что было в момент вывода. Нужен снимок через structuredClone или JSON.stringify.
Разбирают ошибку прода по минифицированному стеку. Без source maps это гадание, а выкладывать их публично не всегда допустимо: лучше загружать их только в систему сбора ошибок.
Оставляют debugger и отладочные console.log в коммите. Их ловят правила ESLint no-debugger и no-console, а при сборке вызовы console можно вырезать минификатором.