website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Un truc pour debugger du C


Posté : 03-11-2014 16:26 icone du post

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