> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

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

> Пошагово пройдите по выполнению транзакции, изучите изменения состояния и определите точку revert в любом смарт-контракте с помощью Tenderly Debugger.

Tenderly Debugger шаг за шагом проходит по выполнению EVM-транзакции — по одному вызову и одной строке исходного кода за раз, показывая трассу выполнения, стек, состояние контракта и точное место, где транзакция откатывается. Используйте его, чтобы понять, почему транзакция не удалась, изучить состояние контракта на любом шаге и воспроизвести транзакцию по верифицированному исходному коду Solidity.

Посмотрите это короткое видео, чтобы узнать основы работы с Debugger, и следуйте краткому руководству ниже для подробного разбора возможностей.

[Смотреть на Loom →](https://www.loom.com/share/09413e8a867f4ddeaa41a5080d771895?sid=b8f60cda-fcb8-401b-ba9a-8bb69630fe9a)

## Быстрый старт с Debugger

Чтобы использовать Debugger, нужно начать с конкретной транзакции. Попробуйте эту [пример-транзакцию](https://dashboard.tenderly.co/tx/0x1696cfc031695003b8a58f0379c7f111b34c7612a67681354dc57cb5853c5c63/debugger?trace=0.2.6.21.1\&pk_vid=4405d1610803d9751776942168287f02).

1. Перейдите на вкладку **Transactions** слева или введите хеш транзакции в верхней Explorer-панели.
2. Нажмите кнопку **Debugger** в правом верхнем углу.

Интерфейс Debugger состоит из четырёх основных панелей:

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-panels-2.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=92882c878f9b4a3afcd74585ccc50f10" alt="Панели Debugger" width="2672" height="1426" data-path="images/developer-explorer/debugger/debugger-panels-2.webp" />

* **Execution trace** (сверху слева): показывает последовательность вызовов, сделанных в транзакции.
* **Исходный код смарт-контракта** (сверху справа): показывает код контракта, с которым идёт взаимодействие.
* **Stack trace** (снизу слева): перечисляет методы, вызванные вплоть до текущей функции.
* **Call information** (снизу справа): даёт детальную информацию о текущем вызове.

## Execution trace

Раздел **Execution Trace** позволяет увидеть каждый вызов, сделанный в течение жизненного цикла транзакции. Удобный переключатель позволяет фильтровать представление между полной трассой и только `CALL`-ами и `DELEGATECALL`-ами.

Вы также можете оставлять комментарии прямо на любой части трассы — это полезно для совместной работы или личных заметок.

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/comment-execution-trace.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=514b1c5f8580c458d5c743d7f8637e62" alt="Панели Debugger" width="4076" height="2382" data-path="images/developer-explorer/debugger/comment-execution-trace.webp" />

## Stack trace

**Stack Trace** даёт представление о методах, которые были вызваны вплоть до активного вызова функции, давая более чёткую картину потока транзакции.

## Декодирование информации о вызове

Здесь вы получаете декодированные детали о текущем вызове в трассе выполнения транзакции в формате JSON. Сюда входит:

* Имя вызванной функции
* Опкоды (`JUMP`, `CALL`, `DELEGATECALL`, `STATICCALL`, `CREATE2`, `CREATE`, `REVERT`, `JUMPDEST`)
* Адреса контракта и вызывающего, а также баланс вызывающего
* Декодированные входы и выходы
* Статистика расхода газа, показывающая общий использованный газ, газ, потреблённый текущей функцией, и оставшийся газ

## Навигация по трассе вызовов

Перемещаться по трассе вызовов и строкам кода легко благодаря кнопкам навигации Debugger.

**Next/Previous** перемещают вас по трассе вызовов, а **Step Up** и **Step Over** помогают перемещаться по стек-трассе и уровням вызовов.

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-skip-call-trace.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=fcafc5a099f21f819759b0002839b5f6" alt="Панели Debugger" width="2672" height="1426" data-path="images/developer-explorer/debugger/debugger-skip-call-trace.webp" />

## Вычисление выражений

Функция **Evaluate** позволяет тестировать выражения прямо внутри Debugger. Это идеально для проверки глобальных переменных, переменных контракта, аргументов функций и локальных переменных.

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-evaluate.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=c1726756dfca3e675a17b82927c08a05" alt="Модальное окно Eval" width="4076" height="2382" data-path="images/developer-explorer/debugger/debugger-evaluate.webp" />

Текущая версия **Evaluate** поддерживает выражения в виде массивов и структур. Кортежи не поддерживаются, поэтому их нельзя вычислить.

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger-1.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=0913ef862d74b729b4ec58c4e1230d22" alt="Debugger + видимые выражения для Eval" width="3584" height="2274" data-path="images/developer-explorer/debugger-1.png" />

<Note>
  Обратите внимание, что Evaluate всё ещё находится в разработке, и мы усердно работаем над тем, чтобы сделать его ещё мощнее.
</Note>
