Deux petites astuces vite fait pour programmeur C++.
Astuce 1, c’est juste un truc que j’ai croise en code et j’ai trouve ca mignon:
int pif = rand() % 26;
char lettre = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”[pif];
Ca vous donne une lettre au hazard (pas util ici mais l’exemple que j’avais vue faisait du sens)
La syntaxe est marante et ca marche
Astuce 2, debugger des programmes avec assert. J’ai deja plus d’une fois declare mon animosite vis a vis de la fonction assert pour la raison qu’on ne peut pas “ignorer toujours” une assert.
Imaginez un moment que quelqu’un place dans une boucle de 1000 elements une assert et que cette assert se declenche a chaque fois. Ou tout bonnement une assert qui se declenceh a chaque action… Des fois on veut tester autrechose et l’assert est plus embetante qu’autre chose.
Generallement, on commente la ligne et on recompile. C’est ok mais lorsque la compilation/linkage sont long c’est un peut galere. Par exemple, ca me prends 45 minutes de recompiler+linker tout au boulot.
D’ou la tactique B.
Lorsque votre assert se declenche, cliquez break pour entrer dans le debugger.
Votre code va ressemblez a ca (QTAssert n’est qu’une macro pour assert dans ce cas)
Un coup de CTRL + F11 (go to asembly) vous donne ca:
Copier l’addresse d’ou est le cursor (notez int 3 comme code assembleur qui fait qu’il y a une exception pour interrompre le cours du programme)
Ouvrez la fenetre memoire et coller l’addresse avec un jolie 0x devant qu iva bien et vous voila a voir le code en assembleur dans la fenetre memoire.
Changez le cc (int 3) en 90 (nop = instruction qui fait rien)
Regardez avec delectation le code en assembleur changer en nop
Et voila, appuyez sur F5 (pour continuer l’execution du programme) et l’assert ne vous embetera plus. Il est a noter que a la prochaine execution, si le code n’a pas ete recompile, l’adresse memoire sera la meme, du coup au lieu de F5 (lancer le debugger), un simple F10 (step in) pour lancer le debugger suffit pour changer le code a l’adresse memoire qui va bien et vous pouvez executer votre programme.
Si vous avez deux assert (ou plus) qui vous embete, ajoutter l’addresse dans la watch list en char * et changer la valeur au demarrage.






ehehe, ces trucs de pirates
Ca me rappelle ma jeunesse quand j’étais demomaker 
(et la petite anecdote: A mon premier boulot, j’ai bossé sur un système embarqué a base de 68 000. Un jour avec un collègue, on regarde un bout de la mémoire et je lui dis “tiens 0×4E75, c’est un RTS en assembleur, on est dans le code”. Il prends la doc du processeur pour vérifier et me regarde avec des gros yeux. :))) Je suis passé pour un extra terrestre qui lit dans la matrice. 10 ans de demomaking sur amiga, ca laisse des traces :))) )