Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : Utiliser la (d)debug.lib avec GCC
(Article écrit par Stéphane Saragaglia et extrait de GuruMed.net - mai 2001, mis à jour en décembre 2003)
|
|
A quoi ça sert ?
Il existe des cas où il n'est pas possible d'utiliser les fonctions d'entrées/sorties
classiques telle printf() :
- dispatcher BOOPSI.
- Task (en opposition avec les processus "Process").
- ...
Une bibliothèque permet, grâce à des fonctions dédiées, d'envoyer des données vers le port série
ou de recevoir des données depuis le port série : la debug.lib. Ceci dans l'optique de communiquer
par exemple avec un terminal déporté, ou alors d'intercepter en local ces informations et de les
afficher dans une console grâce à des outils spécifiques (voir le paragraphe "Outils permettant d'intercepter les sorties série").
Note : les processus sont des "tasks" améliorées pour gérer notamment l'environnement DOS
(entrées/sorties). Voir la structure Process du fichier d'en-tête dos/dosextens.h).
Comment on s'en sert ?
En fait, il existe deux bibliothèques :
- La debug.lib utilise le port série (voir le paragraphe "Outils permettant d'intercepter les sorties série").
- La ddebug.lib utilise le port parallèle (utile lorsque l'on débogue une application utilisant le port série).
La plus célèbre fonction en est "KPrintF()", l'équivalent d'un "printf()".
Le prototype se trouve dans le fichier d'en-tête "clib/(d)debug_protos.h" qui doit être ajouté au fichier
C utilisant une des fonctions de la bibliothèque. Ajouter la bibliothèque qui va bien lors de l'édition
des liens ("gcc ... -ldebug ...").
Ou est-ce qu'on trouve la debug.lib ?
Sur le CD Amiga Developer bien sûr :
- ADCD_2.1:NDK/NDK_3.5/Include/linker_libs/debug.lib
- ADCD_2.1:NDK/NDK_3.1/Includes&Libs;/linker_libs/debug.lib
Le problème est que si ces bibliothèques s'utilisent telles quelles avec SAS/C, StormC
et vbcc, cela n'est pas possible pour GCC car le format des bibliothèques est différent.
Donc pour pouvoir utiliser cette bibliothèque avec GCC, il faut réaliser les pirouettes suivantes :
Quels sont les outils permettant d'intercepter les sorties série ?
Les outils les plus connus permettant d'intercepter les sorties de débogage sur port série sont
Sashimi et Sushi. Pour ma part, j'utilise Sashimi que l'on peut trouver dans le CD Amiga Developer
(ADCD_2.1:Contributions/Olaf_Barthel/Tools/Debugging/Sashimi) ou sur Aminet
(Sashimi et
Sushi.lha).
Je n'ai utilisé Sashimi que de manière simple, via la commande :
sashimi CONSOLE BUFK=64 NOPROMPT ASKEXIT ASKSAVE
|
Y a-t-il des conseils particuliers ?
Attention à bien respecter les formats de conversion des commandes "KPrintF()" et autres
(type "printf()") : %d, %ld, ... Caster si besoin est.
De plus, afficher des messages via la debug.lib ralentit notoirement votre application, tenez en compte.
|