|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | ||||||||||
|
Invité régulier
![]() Inscription : septembre 2004 Messages : 5 ![]() |
Citation:
Code :
Code :
|
||||||||||
|
|
00
|
|
|
#22 | |||||
|
Membre régulier
![]() |
Citation:
- le getenv à chaque fois ça donne une fonction très lente simplement pour pouvoir changer le mode de debug "on the fly" - __func__ n'est pas portable Personnellement j'utilise la même fonction que ton dbg_print avec un masque pour des niveaux de debug et le __LINE__ et __FILE__ comme paramètres ajoutés, ce qui permet un changement de niveau par simple appui de touche de debug. Une version plus évoluée peut ajouter un timestamp à chaque affichage, faire un fichier de log,... debug.h : Code :
Code :
__________________
- Je suis fascine par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre....Et les avions aussi.... - Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien. JC Vandamme. |
|||||
|
|
00
|
|
|
#23 | |||
|
Invité régulier
![]() Inscription : septembre 2004 Messages : 5 ![]() |
Citation:
Citation:
En fait, là où la portabilité est plus douteuse vient des defines à arguments variables qui, d'un compilateur à l'autre ne sont pas tout à fait géré de la même manière. Citation:
Lorsque l'on utilise beaucoup de bibliothèques, la nécessité de debug "vertical" (par degré) est réduite au noyau du programme. Par contre, en ajoutant un paramétrage "horizontal" dépendant du "module" ou de la bibliothèque en conjonction avec le niveau de débug pourrait être intéressant. La problématique est un peu similaire pour la gestion traditionnelle des erreurs, i.e. sans passer par les setjmp/longjmp, (code de retour par rapport à la fonction du module). C'est un sujet de réflexion intéressant. |
|||
|
|
00
|
|
|
#24 | |
|
Membre régulier
![]() |
Citation:
Pour utiliser des fonctions spécifiques gcc, je me suis servis à un moment d'un mode de trace avec le builtin_return_address, très intéressant puisque tu peux remonter tout l'historique des appels de ta fonction sur le stack (le return_address[0], return_address[1], ... plus les accès aux paramètres passés à la fonction un peu comme l'output de tt (taskTrace) de vxWorks, malheureusement ce n'est pas non plus portable
__________________
- Je suis fascine par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre....Et les avions aussi.... - Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien. JC Vandamme. |
|
|
|
00
|
|
|
#25 |
|
Invité régulier
![]() Inscription : septembre 2004 Messages : 5 ![]() |
Pour utiliser des fonctions spécifiques gcc, je me suis servis à un moment d'un mode de trace avec le builtin_return_address, très intéressant puisque tu peux remonter tout l'historique des appels de ta fonction sur le stack (le return_address[0], return_address[1], ... plus les accès aux paramètres passés à la fonction un peu comme l'output de tt (taskTrace) de vxWorks, malheureusement ce n'est pas non plus portable
J'ai aussi implémenté un stack trace pour une des version de mon débugger mémoire, sans les return adresses de gcc. Son degré de portabilité n'est pas encore parfait mais il fonctionne pas mal sous linux et solaris. Si ca t'intéresse, il est à l'url http://ilay.org/yann/articles/memdbg/stack.c. Il va de pair avec l'allocateur mais il est facile de débrancher la dépendance à ce dernier (_mdbg_morecore() est à remplacer par un malloc). |
|
|
00
|
|
|
#26 | |||
|
Membre régulier
![]() |
Citation:
Code :
J'ai hâte de lire ton code !!
__________________
- Je suis fascine par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre....Et les avions aussi.... - Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien. JC Vandamme. |
|||
|
|
00
|
|
|
#27 | ||||
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Citation:
en plus il y a plein d'articles: http://ilay.org/yann/articles/ Je vai les prendre pour les lire avant de me couché :win: Y a intéret à ce qu'il n'y ai pas d'erreur, sinon demain tu vas m'entendre
__________________
gege2061's blog |
||||
|
00
|
|
|
#28 | |
|
Membre régulier
![]() |
Citation:
__________________
- Je suis fascine par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre....Et les avions aussi.... - Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien. JC Vandamme. |
|
|
|
00
|
|
|
#29 | ||
|
Invité régulier
![]() Inscription : septembre 2004 Messages : 5 ![]() |
Citation:
Il y avait un signe de ponctuation dans la phrase qui a été interprété comme partie de l'url. Il fallait lire http://ilay.org/yann/articles/memdbg/stack.c. Pardon pour cette faute idiote. Pour l'article sur le débugger mémoire, il est .... à faire je viens de rajouter tout le répertoire de test préalable à l'article : http://ilay.org/yann/articles/memdbg/mdbg.tgz J'accepte toute remarque et correction avec plaisir. Comme l'allocateur n'est pas des plus fiables, je bosse sur un allocateur basé sur mmap/ftruncate/munmap.... A+[/url] |
||
|
|
00
|
|
|
#30 | |||
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
Tiens, depuis le temps, je n'avais pas lu ce post-it...
Citation:
Et ca s'utilise comme ça : Voilou
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|||
|
|
00
|
|
|
#31 | |
![]() ![]() Inscription : décembre 2003 Messages : 14 505 ![]() |
Citation:
Code :
../main.c:14:16: warning: ISO C does not permit named variadic macros
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|
|
|
00
|
|
|
#32 | |
|
Membre émérite
![]() ![]() Inscription : octobre 2004 Messages : 668 ![]() |
Citation:
Sorry...
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|
|
|
00
|
|
|
#33 |
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Je vai completer un peu ce qui a été dit, pour tracer l'exécution du programme (généralement pour où ça plante), une petite macro :
Code :
#define DP printf ("%S:%d\n", __FILE__, __LINE__)
Etalé sur une dizaines de lignes, on obtient un message différents à chaque ligne! Pour ce qui est de l'allocation mémoire, j'ai trouvé cet article : Allocation de mémoire sécurisée en C et C++. Bon le mélange C et C++ ne me plait pas de trop, de même que le fait de redéfinir *alloc/free par des macro oblige à inclure le fichier d'en tête en dernier, mais le principe est trés interessant : en particulier pour la détection d'Under/Overflow et le cheksum de la structure qui sert à stocker les données de l'allocation. Bon débugage à tous
__________________
gege2061's blog |
|
00
|
|
|
#34 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2007 Messages : 82 ![]() |
Citation:
je trouve ce le sujet de cette rubrique très intéressant pour un débutant comme moi, apprenant tout seul. Je tente de lire petit à petit les commentaires de chacun et de d' assimiler les diverses notions. Une précision; qu 'entendez vous par "buffériser"? |
|
|
|
00
|
|
|
#35 | |
![]() ![]() Inscription : décembre 2003 Messages : 14 505 ![]() |
Citation:
Pose des questions si tu ne comprends pas.
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|
|
|
00
|
|
|
#36 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2007 Messages : 82 ![]() |
Citation:
Une question : les divers macros de "trace de programme" présentées dans cette discussions, servent à remplacer l' usage d' un outilitare pour "debugger" ou s' utilise en complément ? |
|
|
|
00
|
|
|
#37 | |
![]() ![]() Inscription : décembre 2003 Messages : 14 505 ![]() |
Citation:
C'est aussi très utile pour mettre au point une application graphique (trace dans un fichier ou le port série).
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|
|
|
00
|
|
|
#38 |
|
Membre habitué
![]() |
Pour éviter l'erreur de syntaxe d'écriture de test (variable=0) on peut écrire (0==variable).
C'est plus difficile de se tromper maintenant .Pour savoir si l'implémentation du compilateur est conforme au standard AINSI C99, la constante doit être égale à "199901L". Correction en rouge et merci à nicolas.sitbon |
|
|
00
|
|
|
#39 | |
|
Invité régulier
![]() Inscription : novembre 2007 Messages : 11 ![]() |
J'irai plus loin en mettant : -W -Wall -ansi -pendantic
Citation:
désolé après je n'ai que survolé mais parlé de gestion de mémoire en utilisant une fonction système qui ne free pas son malloc, ça me dérange |
|
|
|
00
|
|
|
#40 |
![]() ![]() Inscription : décembre 2003 Messages : 14 505 ![]() |
__________________
Pas de Wi-Fi à la maison : CPL Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://www.bien-programmer.fr/ http://bien-programmer.forum-actif.net/forum.htm |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com