J'essaie de compiler mon programme et de le rendre exécutable, mais chaque fois que j'essaie de l’imprimer, il dit: "Aucun symbole" tulipe "dans le contexte actuel. "
Voici mon code:
#include <stdlib.h>
#include <stdio.h>
int main() {
unsigned long *daffodil = (unsigned long *) malloc(sizeof(unsigned long));
if (daffodil == (unsigned long *) NULL)
exit(EXIT_FAILURE);
*daffodil = 170;
unsigned long *tulip = daffodil;
unsigned long *carnation = (unsigned long *) malloc(sizeof(unsigned long));
if (carnation == (unsigned long *) NULL)
exit(EXIT_FAILURE);
*carnation = 995;
unsigned long *lily = tulip;
unsigned long crocus = 953;
unsigned long *zinnia = &crocus;
(void) printf("Registering daffodil: %lu.n", *daffodil);
(void) printf("Registering tulip: %lu.n", *tulip);
(void) printf("Registering carnation: %lu.n",*carnation);
(void) printf("Registering lily: %lu.n", *lily);
(void) printf("Registering crocus: %lu.n", crocus);
(void) printf("Registering zinnia: %lu.n", *zinnia);
carnation = (unsigned long *) NULL;
free(daffodil);
free(carnation);
return EXIT_SUCCESS;
}
Voici ce que je fais dans le terminal:
Réponses:
2 pour la réponse № 1Pour voir les variables locales dans GDB, vous devez interrompre l'exécution du programme dans cette fonction. Vous essayez d’imprimer la valeur une fois le programme terminé, c’est impossible.
Essayez de mettre un point d'arrêt à la ligne 10, je pense:
(gdb) br 10
(gdb) run
(gdb) print tulip
Vous pouvez également faire une pause au début de main
puis avancez jusqu'à ce que la variable soit initialisée:
(gdb) br main
(gdb) run
(gdb) next
(gdb) next
(gdb) ...
(gdb) print tulip
Le point d'arrêt à main
est si fréquent que gdb
a une commande qui le fait automatiquement: start
.
Si vous êtes particulièrement intéressé par une variable, alors vous pouvez afficher pour l’imprimer automatiquement à chaque étape:
(gdb) start
(gdb) display tulip
(gdb) next
(gdb) next
(gdb) ...