• 0 Голоса
    2 Сообщения
    48 Просмотры

    Решено

    В TVM есть специальная функция для сброса переменных в debug - ~дамп

    Запустите ~dump(имя_переменной);, чтобы напечатать содержимое переменной.

    Запустите ~dump(12345);, чтобы напечатать число 12345.

    Пример:

    () recv_internal(int msg_value, cell in_msg, slice in_msg_body) impure { ;; let's say I want to print the value of the variable msg_value ~dump(msg_value); }

    Пожалуйста, обратите внимание, что эта команда не будет выполняться в основной сети, поэтому не развертывайте производственные контракты с ее помощью. Мой любимый способ локального тестирования смарт-контрактов - это использование [ton-contract-executor](https://github.com/Naltox/ton-contract - executor) - эта потрясающая библиотека запускает локальную версию TVM в веб-сборке прямо внутри Node.js , что очень удобно для написания тестов на JavaScript/TypeScript.

    Чтобы включить отладочную печать в ton-contract-executor, при создании экземпляра контракта передайте debug: true в SmartContractConfig и распечатайте журналы после взаимодействия с контрактом:

    import { SmartContract } from "ton-contract-executor"; const contract = await SmartContract.fromCell(codeCell, dataCell, { debug: true // enable debug }); const send = await contract.sendInternalMessage(...); console.log(send.logs); // print the logs