Как я могу отлаживать смарт-контракт?

При разработке моего смарт-контракта, как я могу его отладить? Существуют ли инструменты для отладки, тестирования или симуляторы, которые я могу использовать для проверки кода?

28 голосов | спросил Joris Bontje 21 Jam1000000amThu, 21 Jan 2016 09:42:08 +030016 2016, 09:42:08

5 ответов


16
  1. Mix IDE имеет отличный интегрированный поэтапный симулятор и отладчик.
  2. TestRPC позволяет быстро тестировать контракт без проблем с запуском узла.
  3. Как только контракт будет жить, блок ether.camp может использоваться для просмотра журналов выполнения внутреннего состояния и EVM.
ответил Tjaden Hess 21 Jam1000000amThu, 21 Jan 2016 10:06:02 +030016 2016, 10:06:02
10

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

В Solidity вы регистрируетесь с События . Затем вы можете прослушать все события вашего контракта с помощью обратного вызова web3.js «allEvents» .

Вот как я отлаживаю мои (в настоящее время) 780 строк прочности.

ответил Paul S 17 FebruaryEurope/MoscowbWed, 17 Feb 2016 03:46:17 +0300000000amWed, 17 Feb 2016 03:46:17 +030016 2016, 03:46:17
6

чтобы отладить контракт, вы можете использовать браузер надежности

отладчик предоставляет вам возможность отлаживать любую транзакцию (создание или вызов) шаг за шагом и визуализировать пространство памяти /хранилища. это помогает вам отслеживать стоимость газа по коду операции и оставшемуся газу после каждого шага.

  

Для отладки транзакций есть два способа сделать это:

     

1 - использование номера блока и индекса транзакции.    введите описание изображения здесь

     

2 - используя хеш транзакции.

 введите описание изображения здесь>> </a> </p>

<p> При успешной загрузке транзакции появится хеш, от и до поля. Затем загружается тракт vm.
<a href=введите описание изображения здесь

  

Сам отладчик содержит несколько элементов управления, которые позволяют переходить через   трассировку и определение текущего состояния выбранного шага.

     

Ползунок и шаговое действие:

     

Ползунок позволяет быстро перемещаться из состояния в другое. Шагая   действия:

     

Шаг в задний шаг за шагом Назад вперед вперед в прыжок вперед    Следующий вызов (это будет выбирать следующее состояние, которое ссылается на контекст   изменения - CALL, CALLCODE, DELEGATECALL, CREATE) Просмотр состояния:

     

Верхняя правая панель содержит основные сведения о текущем   шаг:

     

VMTraceStep : индекс в трассировке текущего шага. Шаг Добавить   память Газ: газ, используемый этой ступенью Оставшийся газ: газ оставлен Загружен   адрес: текущий загруженный код относится к исполняемому коду.   другие 6 панелей описывают текущее выбранное состояние:

     

Список инструкций : список всех инструкций, определяющих   текущий исполняемый код. Хранилище хранилищ изменяет данные вызова памяти $ Call   Стек

точки останова в remix Точки останова могут быть добавлены и удалены, щелкнув левое поле первой строки кода. Вы можете добавить столько точек останова, сколько захотите. введите описание изображения здесь

ответил Badr Bellaj 26 +03002016-10-26T00:21:58+03:00312016bEurope/MoscowWed, 26 Oct 2016 00:21:58 +0300 2016, 00:21:58
3

Вы можете использовать команду truffle debug: http : //truffleframework.com/blog/announcing-full-portable-solidity-debugger

Он поддерживает:

  • Копирование шага (над, в, из, далее, инструкция и т. д.)
  • Местоположение текущего кода, включая адрес текущего контракта
  • Breakpoints
  • Смотреть выражения
  • Переменная проверка (стек, память и хранилище)
  • Пользовательская оценка выражения с использованием переменных Solidity
ответил medvedev1088 16 SatEurope/Moscow2017-12-16T19:44:21+03:00Europe/Moscow12bEurope/MoscowSat, 16 Dec 2017 19:44:21 +0300 2017, 19:44:21
0

Для отладки тестов Javascript Truffle в Visual Studio Code этот ответ работал на меня: https://ethereum.stackexchange.com /а /41096/3708

ответил Svante 24 PMpTue, 24 Apr 2018 14:15:14 +030015Tuesday 2018, 14:15:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132