Saltar al contenido principal

Modos de depuración

Los contratos Soroban son, en la medida de lo posible, programas regulares de Rust y se pueden depurar utilizando las mismas herramientas que normalmente usarías.

Las instalaciones de depuración disponibles difieren significativamente dependiendo de si un contrato se compila de forma nativa para pruebas locales o se compila en Wasm para su implementación.

Decidir entre estos dos modos y aprovecharlos al máximo mientras depuras requiere una comprensión cuidadosa de qué código está incorporado en los contratos implementados y qué código está disponible solo para pruebas locales.

Modo de pruebas locales

Es posible (y se recomienda durante el desarrollo) compilar contratos Soroban nativamente (por ej., como código x86-64 o AArch64) y enlazar con el entorno del host directamente, de manera que el contrato no sea un huésped ejecutándose en una máquina virtual de Wasm en absoluto: simplemente es una biblioteca nativa llamando a otra -- su host -- y tanto el host como el contrato están vinculados como un solo programa, junto con un arnés de pruebas.

Esta configuración se conoce como "modo de pruebas locales" y dado que elimina la máquina virtual Wasm de la experiencia de depuración, tiene muchas ventajas:

El modo de pruebas locales es la configuración predeterminada al compilar código dirigido a la CPU y el sistema operativo de tu ordenador local, que es lo que hará cargo si configuras un nuevo proyecto de Rust y no especificas un objetivo.

Modo Wasm

Si, por el contrario, deseas compilar para la implementación, debes decirle a cargo que construya para el objetivo Wasm.

Compilar para Wasm deshabilitará muchas de las instalaciones de depuración descritas anteriormente, típicamente por una de tres razones:

    • La VM de Wasm simplemente no puede (o la VM que hemos elegido no lo hace) proporcionarlas.
    • La VM de Wasm podría proporcionarlas, pero hacerlo haría que el código Wasm resultante fuera imprácticamente grande.

Si bien alentamos a que la mayoría de las pruebas se realicen en modo de pruebas locales, algunos problemas obviamente solo surgirán en la implementación y algunas instalaciones de depuración, por lo tanto, permanecen disponibles incluso allí:

    • Un host "sandbox" con un ledger simulado que puede leer y escribir entradas de ledger CONTRACT_DATA en el sistema de archivos local.
    • Códigos de Status extensibles por el usuario que pueden ser devueltos de cualquier llamada de contrato para indicar problemas.