Al desarrollar mi contrato inteligente, ¿cómo puedo depurarlo? ¿Existen herramientas de depuración, prueba o simuladores que pueda usar para examinar mi código?
Todas esas son buenas herramientas, pero he descubierto que el registro de eventos es un método mucho más fácil para la depuración, además, si está haciendo algo con dinero, desea mantener un registro de lo que sucedió.
En Solidity, inicia sesión con Eventos . Luego puede escuchar todos los eventos en su contrato con la devolución de llamada web3.js "allEvents"
Así es como depuro mis (actualmente) 780 líneas de solidez.
para depurar un contrato, puede usar el navegador solidity
el depurador le brinda la capacidad de depurar cualquier transacción (creación o llamada) paso a paso y visualizar la memoria/espacio de almacenamiento. le ayuda a rastrear el costo del gas por código de operación y el gas restante después de cada paso.
Para depurar transacciones, hay dos formas de hacerlo:
1-utilizando un número de bloque y un índice de transacción.
2-utilizando un hash de transacción.
Al cargar la transacción con éxito, se mostrarán los campos hash, from y to. A continuación, se carga el seguimiento de máquina virtual.
El depurador en sí contiene varios controles que permiten pasar por encima de la traza y ver el estado actual de un paso seleccionado.
Deslizador y acción de paso:
El control deslizante permite pasar rápidamente de un estado a otro. Las acciones de paso son:
Paso hacia atrás Paso sobre Atrás Paso sobre adelante Paso hacia adelante Saltar Siguiente llamada (esto seleccionará el siguiente estado que se refiere a cambios de contexto - CALL, CALLCODE, DELEGATECALL, CREATE) Visor de estado:
El panel superior derecho contiene información básica sobre el paso actual:
VMTraceStep : el índice en la traza del paso actual. Paso Agregar memoria Gas: gas utilizado por este paso Gas restante: gas restante Dirección cargada: el código actual cargado, se refiere al código de ejecución. Los otros 6 paneles describen el estado actual seleccionado:
Lista de instrucciones : lista de todas las instrucciones que definen el código de ejecución actual. Pila Almacenamiento Cambios Memoria Llamada Datos$ Pila de llamadas
puntos de interrupción en remix Se pueden agregar y eliminar puntos de interrupción haciendo clic en el margen izquierdo de la primera línea de código. Puede agregar tantos puntos de interrupción como desee.
start debugging
botón no hace nada excepto escribir 0xc09ff6fb32dd6ef66f5691367c11c762c8f730aadeab065d57f8137cd3746bfc is not a contract invokation or contract creation
en el registro.Puede usar truffle debug
el comando: http://truffleframework.com/blog/anounce-full-portable-solidity-debugger
Es compatible con:
Para depurar las pruebas de Truffle Javascript en Visual Studio Code, esta respuesta funcionó para mí: https://ethereum.stackexchange.com/a/41096/3708
La última versión de truffle tiene un depurador incorporado que se puede usar para depurar el estado de una transacción fallida.
$ truffle debug <transaction-id>
donde <transaction-id>
está el id de la transacción con error,
una vez que se inicia el depurador, siga las instrucciones para recorrer e imprimir el estado variable, etc.
Obtenga más información aquí: https://www.trufflesuite.com/blog/annunciando-full-portable-solidity-debugger
Pablo Razvan Berg