Sashimi : indispensable au débogage
Un article de GuruMed.
Sommaire |
Comprendre Sashimi et utiliser ses options
Par Sara
Cet article complète celui sur la bibliothèque ddebug où était évoquée la redirection des messages destinés au port série vers une fenêtre ou un fichier.
Qu'est-ce que c'est ?
Sashimi s'utilise avec les outils de débogage qui se servent du port série pour envoyer des informations de débogage (Enforcer, KprintF(), Mungwall, PatchWork...). Il permet d'intercepter ces informations et de les afficher dans la sortie par défaut (console, fichier), en n'interférant pas avec les péréphériques connectés.
Il a été écrit par Olaf BARTHEL qui souhaitait corriger certaines bogues de son prédécésseur "Sushi" (de Carolyn Scheppner) : quelques problèmes avec l'algorithme de buffer circulaire, bloquage d'Intuition, ...
On peut trouver cet outil, sa doc et ses sources dans le CéDé Développeur 2.1 ou sur Aminet :
ADCD_2.1:Contributions/Olaf_Barthel/Tools/Debugging/Sashimi/Aminet:dev/debug/Sashimi.lha
Comment ça marche ?
Sashimi utilise un buffer circulaire pour stocker et afficher les informations interceptées. Ce qui veut dire qu'arrivé en fin de buffer, les plus anciens messages seront écrasés. Des options discutées plus bas permettent de régler la taille du buffer. Par défaut, Sashimi affiche les messages à chaque interception du caractère '\n', mais lesdites options permettent de modifier ce comportement. Sashimi se lance à partir du shell (ou via IconX) et nécessite au moins le Kickstart 2.04.
Les invocations les plus courantes sont les suivantes :
- Dans un shell, après que le WB soit lancé, pour provoquer l'ouverture d'une console lors de l'appel à un KPrintF() ou similaire..
- "sashimi CONSOLE BUFK=64 NOPROMPT ASKEXIT ASKSAVE"
- Assez tôt Dans la startup-sequence, afin de permettre éventuellement de déceler des problèmes au démarrage, lorsque couplé avec un enforcer ou autre...
- "run <>NIL: sashimi >>Ram:sashimi.out BUFK=128 NOPROMPT"
- éventuellement suivi d'un :
- "sashimi >NIL: RECOVER=Ram:sashimi.out"
- Si le problème intercepté a été suivi d'un crash système et d'un reboot à chaud ;)
Comment en savoir plus ?
Je vous propose de passer en revue les principales options de Sashimi :
- RECOVER=nom_fichier
- Dans le cas où le système crasherait avant qu'une sauvegarde de la sortie ait été réalisée, cette option permet de récupérer "éventuellement" les infos de débogage toujours présentes en mémoire au démarrage "à chaud" suivant. Le fichier "nom_fichier" est le fichier dans lequel sont sauvegardées les données dans le cas où RECOVER réussit à récupérer des messages.
- BUFK=n
- BUFFERSIZE=n
- Ces deux options permettent de redéfinir la taille du buffer circulaire de sauvegarde qui est par défaut de 32Ko.
- BUFK définit la taille par puissances de 2 (à partir de 4k) en opposition à
- BUFFERSIZE qui autorise toutes les tailles.:
- BUFK=8 : 8192 octets
- BUFFERSIZE=8000 : 8000 octets
- TIMERON
- Permet de d'activer Sashimi chaque 1/10 de secondes, et non pas à chaque retour chariot.
- CONSOLE
- Sashimi s'ouvre une fenêtre d'entrées/sorties. La fenêtre s'ouvre lorsque des messages sont affichés (ou avec le message l'installation).
- Ctrl-D : efface la sortie
- Ctrl-F : sauvegarde la sortie
- Ctrl-E : nettoie le buffer circulaire
- Ctrl-C : quitte
- NOPROMPT
- Supprime le message d'installation lors du lancement de sashimi. Evite les problèmes lors du lancement dans une startup-sequence par exemple.
Les autres options, moins importantes ou "de cosmétique" peuvent être trouvées dans la doc de l'archive (en Anglais).
Si vous détectez des erreurs ou voulez faire des remarques, n'hésitez pas à me contacter.
A bientôt.
Stéphane SARAGAGLIA, saragagliaMAJUSCULESAVIRER@ifrance.com
20 Février 2002
Mis à jour le 7 Avril 2002
Mis à jour le 28 Mars 2004 : mel antispam
