При разработке моего смарт-контракта, как я могу его отладить? Существуют ли какие-либо инструменты отладки, тестирования или симуляторы, которые я могу использовать для проверки своего кода?
Все это хорошие инструменты, но я обнаружил, что регистрация событий — гораздо более простой метод отладки, плюс, если вы делаете что-то с деньгами, вы хотите вести учет того, что произошло.
В Solidity вы регистрируетесь с помощью Events . Затем вы можете прослушивать все события вашего контракта с обратным вызовом web3.js «allEvents».
Вот как я отлаживаю свои (на данный момент) 780 строк Solidity.
для отладки контракта вы можете использовать браузер Solidity
отладчик предоставляет вам возможность шаг за шагом отлаживать любую транзакцию (создание или вызов) и визуализировать объем памяти/хранилища. это поможет вам отслеживать стоимость газа по коду операции и оставшемуся газу после каждого шага.
Для отладки транзакций есть два способа сделать это:
1 — с использованием номера блока и индекса транзакции.
2-использование хэша транзакции.
При успешной загрузке транзакции появится поле хеш, от и до. Затем загружается vm trace.
Сам отладчик содержит несколько элементов управления, позволяющих пошагово пройтись по трассе и увидеть текущее состояние выбранного шага.
Ползунок и пошаговое действие:
Ползунок позволяет быстро переходить из одного состояния в другое. Пошаговые действия:
Шаг назад Шаг назад Шаг назад Шаг вперед Шаг вперед Перейти к следующему вызову (при этом будет выбрано следующее состояние, которое относится к изменению контекста — CALL, CALLCODE, DELEGATECALL, CREATE) Просмотр состояния:
Верхняя правая панель содержит основную информацию о текущем шаге:
VMTraceStep : индекс в трассировке текущего шага. Шаг Добавить память Газ: газ, использованный на этом шаге Оставшийся газ: оставшийся газ Загруженный адрес: текущий загруженный код, относится к исполняемому коду. Остальные 6 панелей описывают текущее выбранное состояние:
Список инструкций : список всех инструкций, определяющих текущий исполняемый код. Память в стеке Изменения в памяти Данные вызовов$ Стек вызовов
точки останова в remix Точки останова можно добавлять и удалять, щелкнув левое поле первой строки кода. Вы можете добавить столько точек останова, сколько хотите.
start debugging
кнопки ничего не делает, кроме записи 0xc09ff6fb32dd6ef66f5691367c11c762c8f730aadeab065d57f8137cd3746bfc is not a contract invokation or contract creation
в журнал.Вы можете использовать truffle debug
команду: http://truffleframework.com/blog/announcing-full-portable-solidity-debugger
Он поддерживает:
Для отладки тестов Truffle Javascript в коде Visual Studio мне помог этот ответ: https://ethereum.stackexchange.com/a/41096/3708
последняя версия truffle имеет встроенный отладчик, который можно использовать для отладки состояния неудачной транзакции.
$ truffle debug <transaction-id>
где <transaction-id>
id транзакции с ошибкой,
после запуска отладчика следуйте инструкциям, чтобы выполнить пошаговое руководство и распечатать состояние переменной и т. д.
узнайте больше здесь: https://www.trufflesuite.com/blog/announcing-full-portable-solidity-debugger
Пол Разван Берг