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

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

Чтобы использовать Debugger, нужно начать с конкретной транзакции. Попробуйте эту пример-транзакцию.
  1. Перейдите на вкладку Transactions слева или введите хеш транзакции в верхней Explorer-панели.
  2. Нажмите кнопку Debugger в правом верхнем углу.
Интерфейс Debugger состоит из четырёх основных панелей: Панели Debugger
  • Execution trace (сверху слева): показывает последовательность вызовов, сделанных в транзакции.
  • Исходный код смарт-контракта (сверху справа): показывает код контракта, с которым идёт взаимодействие.
  • Stack trace (снизу слева): перечисляет методы, вызванные вплоть до текущей функции.
  • Call information (снизу справа): даёт детальную информацию о текущем вызове.

Execution trace

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

Stack trace

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

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

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

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

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

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

Функция Evaluate позволяет тестировать выражения прямо внутри Debugger. Это идеально для проверки глобальных переменных, переменных контракта, аргументов функций и локальных переменных. Модальное окно Eval Текущая версия Evaluate поддерживает выражения в виде массивов и структур. Кортежи не поддерживаются, поэтому их нельзя вычислить. Debugger + видимые выражения для Eval
Обратите внимание, что Evaluate всё ещё находится в разработке, и мы усердно работаем над тем, чтобы сделать его ещё мощнее.