Depurador
El depurador muestra el estado del contrato mientras recorre una transacción.
Puede utilizarse en transacciones creadas en Remix o proporcionando el hash de una transacción. Esto último supone que usted dispone del código fuente del contrato o que ha introducido la dirección de un contrato verificado.
Para iniciar una sesión de depuración
Haga clic en el botón de depuración en el Terminal cuando aparezca allí una transacción exitosa o fallida. El depurador se activará y ganará el foco en el panel lateral.
Active el depurador en el Gestor de complementos y, a continuación, haga clic en el error del panel de iconos. Para iniciar la sesión de depuración, introduzca la dirección de una operación desplegada -mientras tiene el código fuente en el editor y, a continuación, haga clic en el botón Iniciar depuración.
El depurador resaltará el código relevante en el Editor. Si desea volver a editar el código sin que el depurador lo resalte, haga clic en el botón Detener depuración.
Para saber más sobre cómo utilizar esta herramienta vaya a la página Depuración de transacciones.
Esta página repasará la opción Usar fuentes generadas del depurador, su navegación y sus paneles.
Utilizar fuentes generadas
This option is available for contracts using Solidity 0.7.2 or greater. See the solidity blog for more details about generated sources.
Utilizar fuentes generadas facilitará la auditoría de sus contratos. Cuando la opción está marcada, puede entrar en esas salidas del compilador - mientras depura.
Estas salidas del compilador aparecerán en un archivo .yul separado en el editor Remix.
Los paneles del depurador
Pila de funciones
La pila de funciones enumera las funciones con las que interactúa la transacción.
Locales Solidarios
Las Solidity Locals son las variables locales dentro de una función.
Estado de solidez
Estas son las variables de estado del contrato.
Opcodes
Este panel muestra el número de paso y el código de operación en el que se encuentra actualmente el depurador.
As you drag the slider (which is above the navigation buttons), the focused step number & opcode changes.
Detalles del paso
Detalles del paso muestra más información sobre el paso opcode.
Pila
Este panel muestra la pila EVM.
Para más información sobre el stack.
Memoria
La memoria se vacía para cada nueva llamada de mensaje. La memoria es lineal y puede direccionarse a nivel de byte. Las lecturas están limitadas a un ancho de 256 bits, mientras que las escrituras pueden tener un ancho de 8 bits o de 256 bits.
El panel Memoria consta de 3 columnas. Puede que necesite hacer el panel lateral de Remix un poco más ancho para que el formato sea correcto. (Arrastre el borde entre el panel principal y el panel lateral hacia la derecha).
La 1ª columna es la ubicación en memoria. La 2ª columna es el valor codificado hexadecimal. La 3ª columna es el valor descodificado. Si no hay nada, aparecerán los signos de interrogación (?) - así:
0x10: 00000000000000000000000000000000 ????????????????
Aquí tiene un ejemplo completo del panel Memoria,
Algunas posiciones de dirección tienen valores codificados en hexadecimal y esos valores se descodifican a continuación. Por ejemplo, compruebe la posición 0xa0 y 0x140.
Almacenamiento
This is the persistent storage.
Pila de llamadas
Todos los cálculos se realizan en una matriz de datos denominada pila de llamadas. Tiene un tamaño máximo de 1024 elementos y contiene palabras de 256 bits.
Datos de llamada
Los datos de la llamada contienen los parámetros de las funciones.
Valor de retorno
Se refiere al valor que devolverá la función.
Cambios en el almacenamiento completo
This shows the persistent storage at the end of the function.
Puntos de interrupción
Se pueden colocar puntos de interrupción en el canalón del Editor para pausar el depurador.
Información adicional
La información granular del depurador ofrece a los usuarios información detallada sobre lo que ocurre en una transacción, por lo que no sólo es bueno para depurar, sino que también es una excelente herramienta de enseñanza.
Para aprender a utilizar el depurador, vaya a Depuración de transacciones.