Je viens de commencer à programmer en c et je veux tester du code. Donc, j'ai besoin de connaître la valeur d'une variable à un moment précis du programme que je connais déjà.
Lors de la recherche, j'ai vu que beaucoup de gens utilisaient gdb et core dump, mais la plupart des exemples que j'ai trouvés l'utilisent pour déboguer le code en cas de plantage. dans mon cas, je ne veux pas terminer l'exécution, je veux juste enregistrer / connaître la valeur d'une variable spécifique à un point spécifique.
par exemple:
si J'ai ce morceau de code:
int func(int x){ x = 3 * x; if(x > 0){ x = x % 4; /* I want to know the value of x at this point*/ } else { x = x + 1; /* I want to know the value of x at this point*/ } return x; }
si l'utilisateur entre la valeur, je veux savoir quelle sera la valeur de x à l'intérieur du bloc de (if) après le calcul .
MISE À JOUR: pour clarifier ma question, j'ai un gros code et je veux tester le package complet et je veux écrire une fonction qui me dit quelle est la valeur stockée à ce stade du programme.
4 Réponses :
Je pense que vous pouvez utiliser quelque chose comme ceci
x= ...
après chaque expression avec
printf("%d\n",x);
dans votre fonction. Ou vous pouvez utiliser fprintf pour écrire des valeurs dans un fichier à la place printf si vous ne souhaitez pas afficher de valeurs dans la console.
Merci Peter, le problème est que dans mon cas, j'ai un gros code et je ne veux pas mettre manuellement le fprintf. En fait, j'ai une fonction qui décide du point spécifique en fonction de certaines exigences, alors je prévoyais d'utiliser l'instrumentation pour connaître la valeur de la variable à ce stade (ce qui se trouve à l'intérieur de l'emplacement mémoire actuel).
Utilisez le débogueur (installez n'importe quel IDE C comme Eclipse CDT et vous n'aurez rien à configurer)
Vous pouvez même effectuer le débogage en ligne https://www.onlinegdb.com/ p >
Une autre approche développant l'utilisation de printf consiste à utiliser des macros ou des fonctions de débogage. Par exemple. voir:
https://github.com/jleffler/soq /blob/master/src/libsoq/debug.c
Quelque chose comme celui-ci peut être utilisé pour permettre l'activation dynamique du débogage pour certains cas d'utilisation de votre fonction, puis le désactiver à nouveau afin de ne pas avoir trop de sortie à travailler lors du débogage de votre code.
GDB est le meilleur outil pour vous. Pendant l'exécution du programme, vous pouvez voir les valeurs des variables. Veuillez suivre les étapes ci-dessous:
compilez votre programme avec l'option -g.
(gdb) print variable-name
Maintenant, exécutez votre programme avec gdb:
(gdb) step
Avec un débogueur, vous pouvez définir des points d'arrêt qui provoquent l'arrêt du programme, puis vous pouvez parcourir le code, ligne par ligne tout en surveillant les variables et leurs valeurs, et une fois cela fait, vous pouvez continuer l'exécution. D'autres méthodes de débogage incluent le "débogage printf" dans lequel vous ajoutez simplement un grand nombre d'appels
printf
pour imprimer l'état du programme et les valeurs des variables importantes et pertinentes.En relation: stackoverflow.com/q/8884335/6699433