2009-12-22 5 views
1

lorsque j'exécute le fichier core dans gdb, gdb ne montre pas d'où provient l'erreur ou quelle ligne dans l'application à l'origine du problème. J'utilise les options du compilateur -g -DDEBUG -D_DEBUG, mais cela ne semble pas aider.gdb n'imprime pas les informations de débogage

Toute aide serait appréciée, merci.

+0

Des erreurs peuvent se produire à l'intérieur des fonctions de la bibliothèque. Avez-vous essayé de taper «backtrace»? – Artelius

Répondre

2

Vous pourriez souffler votre pile. Par exemple, après l'exécution du programme suivant

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    int a[10]; 

    memset(a, 0, 100 * sizeof a[0]); 

    return 0; 
} 

puis en cours d'exécution gdb sur les rendements obtenus core

 
$ gdb oflow core 
[...] 
Core was generated by `./oflow'. 
Program terminated with signal 11, Segmentation fault. 
#0 0x0000000000000000 in ??() 

La sortie des commandes where et bt est pas très utile:

 
(gdb) where 
#0 0x0000000000000000 in ??() 
#1 0x0000000000000000 in ??() 
(gdb) bt 
#0 0x0000000000000000 in ??() 
#1 0x0000000000000000 in ??() 
0

ok, problème résolu. J'ai eu une fonction récursive qui renvoyait une chaîne, mais le problème était qu'il n'y avait rien retourné, mais je ne comprends toujours pas pourquoi les informations de débogage n'ont pas été générées, quand je traverse le code, il montre les numéros de ligne que je marche à travers, mais je suppose que parce que la ligne il y avait une erreur manquait? donc il n'y avait pas de point de rupture pour savoir où cela s'est mal passé? quand il essayait de se concaténer en récursif dans la fonction, en utilisant "+ =" il passait dans le deuxième appel mais se bloquait à la fin de la fonction parce que rien n'était retourné. mais cela ne devrait pas avoir généré une erreur sur le premier appel de fonction sur la ligne où il n'est pas retourné?

merci.

Questions connexes