Débogueur
Le débogueur montre l’état du contrat lors de l’exécution d’une transaction.
Il peut être utilisé pour les transactions créées sur Remix ou en fournissant le hachage d’une transaction. Cette dernière solution suppose que vous disposiez du code source du contrat ou que vous ayez saisi l’adresse d’un contrat vérifié.
Pour démarrer une session de débogage, vous pouvez soit
Cliquez sur le bouton de débogage dans le terminal lorsqu’une transaction réussie ou échouée y apparaît. Le débogueur sera activé et prendra le focus dans le Panneau latéral.
Activez le débogueur dans le gestionnaire de plugins et cliquez ensuite sur le bogue dans le panneau d’icônes. Pour démarrer la session de débogage, saisissez l’adresse d’une transaction déployée - tout en ayant le code source dans l’éditeur - puis cliquez sur le bouton Débogage.
Le débogueur met en évidence le code concerné dans l’éditeur. Si vous souhaitez revenir à l’édition du code sans les surbrillances du débogueur, cliquez sur le bouton Arrêter le débogage.
Pour en savoir plus sur l’utilisation de cet outil, consultez la page Debugging Transactions.
Cette page présente l’option Utiliser les sources générées du débogueur, sa navigation et ses panneaux.
Utiliser les sources générées
This option is available for contracts using Solidity 0.7.2 or greater. See the solidity blog for more details about generated sources.
L’utilisation des sources générées facilitera l’audit de vos contrats. Lorsque l’option est cochée, vous pouvez accéder aux sorties du compilateur - pendant le débogage.
Ces sorties du compilateur apparaîtront dans un fichier .yul séparé dans l’éditeur Remix.
Les panneaux du débogueur
Pile de fonctions
La pile de fonctions répertorie les fonctions avec lesquelles la transaction interagit.
Solidité Locale
Les Solidity Locals sont les variables locales à l’intérieur d’une fonction.
État de Solidité
Il s’agit des variables d’état du contrat.
Opcodes
Ce panneau affiche le numéro d’étape et le opcode sur lequel le débogueur se trouve actuellement.
Lorsque vous faites glisser le slider (qui se trouve au-dessus des boutons de navigation), le numéro d’étape et l’opcode focalisés changent.
Détails des étapes
Détails de l’étape affiche plus d’informations sur l’étape de l’opcode.
Pile
Ce panneau présente la pile EVM.
Pour plus d’informations sur le site stack.
Mémoire
La mémoire est vidée à chaque nouvel appel de message. La mémoire est linéaire et peut être adressée au niveau de l’octet. Les lectures sont limitées à une largeur de 256 bits tandis que les écritures peuvent avoir une largeur de 8 bits ou de 256 bits.
Le panneau « Mémoire » se compose de 3 colonnes. Il se peut que vous deviez élargir un peu le panneau latéral de Remix pour que le formatage soit correct. (Faites glisser la bordure entre le panneau principal et le panneau latéral vers la droite).
La première colonne est l’emplacement dans la mémoire. La 2ème colonne est la valeur codée en hexadécimal. La troisième colonne est la valeur décodée. S’il n’y a rien, les points d’interrogation (?) s’affichent - comme ceci :
0x10: 00000000000000000000000000000000 ????????????????
Voici un exemple complet du panneau Mémoire,
Certains emplacements d’adresse ont des valeurs codées en hexadécimal et ces valeurs sont ensuite décodées. Par exemple, vérifiez les positions 0xa0 et 0x140.
Stockage
This is the persistent storage.
Pile d’appels
Tous les calculs sont effectués sur un tableau de données appelé pile d’appel. Il a une taille maximale de 1024 éléments et contient des mots de 256 bits.
Données d’appel
Les données d’appel contiennent les paramètres des fonctions.
Valeur de retour
Le fait référence à la valeur que la fonction renverra.
Changements dans le stockage complet
This shows the persistent storage at the end of the function.
Points d’arrêt
Des points d’arrêt peuvent être placés dans la gouttière de l’éditeur pour mettre le débogueur en pause.
Informations complémentaires
Les informations granulaires du débogueur donnent aux utilisateurs des informations détaillées sur ce qui se passe dans une transaction. Le débogueur n’est donc pas seulement utile pour le débogage, c’est aussi un excellent outil d’enseignement.
Pour en savoir plus sur l’utilisation du débogueur, consultez [Déboguer les transactions] (tutorial_debug.html).