Forum » » Création-Développement » » Un truc pour debugger du C
Posté : 03-11-2014 16:26
Là je cherche une bug et vous fais profiter d'un de mes trucs en C
Souvent on voudrais savoir à quelle ligne ça plante..
Alors j'ai une macro comme ça
ULONG asmline=0;
#define LL { asmline= __LINE__ ; printf("Line:%ld\n",asmline); }
__LINE__ est le numéro de ligne du listing
Ca l'imprime pour voir où en est le programme
Mais cette impression dans la console est parfois trop lente, bufferisée comme une imprimante, et la dernière ligne "Ligne:1500" alors que le crash a eu lieu ligne 1510 par exemple
Aussi je copie aussi ce numéro de ligne en memoire dans la variable asmline
Quand le crash a lieu allez voir le "desassemblage" et vous verrez certainement un " li 1510" cad le "load immediate" du numero de ligne en asm ppc
Utilisation juste ajouter LL en debut de ligne (mais faites gaffe aux "if")
/* first do culling */
LL tri->P=P;
LL V =O->V2.X;
LL i=tri->VI[0];
LL P[0].x=V[i].x;
LL P [0].y=V[i].y;
LL P[0].z=V[i].z;
LL i=tri->VI[1];
LL P[1].x=V[i].x;
LL P[1].y=V[i].y;
LL P[1].z=V[i].z;
LL i =tri->VI[2];
LL P[2].x=V[i].x;
LL P[2].y=V[i].y;
LL P[2].z=V[i].z;
LL
LL FaceCCW= ((P[1].x - P[0].x)*(P[2].y - P[0].y)-(P[2].x - P[0].x)*(P[1].y - P[0].y) < 0.0); /* formula from TinyGL */
LL if(MAT->state.CullingMode==W3D_CW)
FaceCCW=!Fac eCCW;
LL if(MAT->state.CullingMode==W3D_NOW)
FaceCCW= TRUE;
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1964&forum=14