Форматер и парсер стека

ДанныеРазработчикТекст
Реклама · УДАЛИТЬ?

Очищенный стек (Markdown)

Реклама · УДАЛИТЬ?

Гид

Форматер и парсер трассировки стека

Форматер и парсер стека

Вставьте сырой стек трассировки из JavaScript, Python, Java, Ruby, Go, .NET или PHP и мгновенно получите цветовую, фрейм-по-фрейму разбивку. Инструмент автоматически определяет язык, отделяет ваш код от шума фреймворков и генерирует чистый блок Markdown, который можно сразу вставить в отчёт об ошибке или в запрос на исправление.

Как использовать

  1. Вставьте сырой стек трассировки в область ввода или нажмите один из примеров языка, чтобы увидеть работу форматера.
  2. Оставить язык включённым Автоопределение, или выберите вручную, если формат необычный или обрезанный.
  3. Переключать Сжатие фреймов рамок поставщика для сжатия длинных последовательностей кода библиотек в один раскрываемый блок.
  4. Используйте Выделение фреймов пользовательского кода чтобы ваши собственные файлы выделялись из остальной части трассировки.
  5. Нажмите кнопку копирования рядом с результатом в формате Markdown, чтобы вставить чистый блок кода в GitHub, Slack или Jira.

Возможности

  • Поддерживаются семь языков – JavaScript / TypeScript, Python, Java / Kotlin, Ruby, Go, .NET (C#) и PHP.
  • Автоматическое определение языка – парсер анализирует характерные паттерны в вашей трассировке и выбирает правильную грамматику, поэтому вы редко должны вручную устанавливать язык.
  • Сжатие фреймов поставщика – длинные последовательности node_modules, site-packages, Spring, gems или System.* фреймов сворачиваются в одну строку, которую можно раскрыть одним кликом.
  • Выделение фреймов пользовательского кода – ваши собственные файлы отображаются в тёплом акцентном цвете, чтобы важные строки не исчезали в шуме.
  • Обобщённое исключение – тип и сообщение извлекаются в заголовок с баннерами по количеству общих, пользовательских и фреймов поставщика.
  • Цепочки «вызвано из» – вложенные исключения из Java и цепочки traceback из Python отображаются как отдельные разделы.
  • Экспорт в Markdown – генерируется заключённый блок кода, готовый к вставке в отчёты об ошибках, запросы на исправление или инструменты общения.
  • Полностью на стороне клиента – ничего никогда не покидает ваш браузер; безопасно использовать с внутренними трассировками из производственных систем.

Распространенные случаи использования

  • Оценка инцидента в производственной среде – вставьте длинную трассировку и сразу определите, какой из ваших собственных файлов находится в начале цепочки.
  • Написание лучшего отчёта об ошибке – экспортируется трассировка в формате Markdown, которая отображается чисто на GitHub, GitLab и Jira.
  • Проверка ошибочного лога коллеги – сжимайте фреймы сторонних продуктов, чтобы обсуждение оставалось сфокусированным на коде, который вы действительно владеете.
  • Обучение отладке – используйте цветовую выделение пользовательского и поставщика кода, чтобы показать новым разработчикам, как читать трассировку снизу вверх.

Часто задаваемые вопросы

  1. Почему вы читаете трассировку снизу вверх?

    В большинстве языков стек растёт вниз, когда функции вызывают друг друга, и среда печатает самый последний вызов в верхней части. Чтение снизу вверх даёт вам временной порядок: сначала точка входа, затем каждый последующий вызов, и в конце — строка с ошибкой. Также внизу находятся «вызвано из» в Java и цепочки traceback в Python, которые часто содержат истинную причину ошибки.

  2. Какова разница между трассировкой стека и крахом?

    Трассировка стека — это текстовый список вызовов функций, которые были активны в момент возникновения исключения. Крах-дамп — это двоичная копия памяти, регистров и потоков в момент критической ошибки, обычно генерируемая операционной системой или средой выполнения. Трассировки стека дешевы и делятся в чатах; дампы краха требуют отладчика для полезности и часто содержат чувствительные данные памяти.

  3. Что такое фреймы фреймворков или поставщиков?

    Фреймы, у которых путь к файлу или полное имя относятся к библиотеке, фреймворку, среде выполнения или установленному зависимому компоненту, а не к вашему собственному исходному коду. Примеры включают всё, что находится под node_modules, site-packages, vendor/, /usr/lib/, GOROOT, префиксами java.* / javax.* и пространствами имен System.* / Microsoft.* в .NET. Они редко содержат ошибку, которую вы ищете, поэтому сжатие их делает трассировку намного легче для чтения.

  4. Почему в Python трассировки включают строку «в процессе обработки вышеуказанной ошибки»?

    Python сохраняет цепочки исключений: когда одно исключение возникает во время обработки другого, интерпретатор печатает оба. Строка «в процессе обработки вышеуказанной ошибки, произошла другая ошибка» указывает на неявную цепочку, в то время как «вышеперечисленное исключение было прямой причиной следующего исключения» указывает на явную цепочку, установленную с помощью «raise X from Y». Вместе они помогают вам понять, была ли более поздняя ошибка вызвана предыдущей или просто возникла поверх неё.

  5. Что такое паника в Go и как она отличается от исключения?

    Паника — это механизм Go для необратимых ошибок среды выполнения, по духу похожий на исключение, но намеренно более узкий. Идиоматическое использование Go включает возвращение значений ошибок для ожидаемых сценариев отказа и оставляет панику для действительно непредвиденных программных ошибок, таких как обращение к нулевому указателю или выход за пределы среза. Паника проходит по стеку горутины, выполняет отложенные функции и в конечном итоге приводит к краху программы, если не перехвачена функцией recover.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?