2010-06-10 25 views
1

je c/gtk + application et GList qui a rempli trois éléments, lorsque je tente d'exécuter du code ci-dessous avec gdb:glist.c: Aucun fichier ou répertoire

if (g_list_length(mw->img_list) > 0) 
    printf(">0"); 
else 
    printf("<0"); 

je vois:

Programme signal reçu SIGSEGV, défaut de segmentation. [Passage au thread 0xb73c4700 (LWP 7936)] IA__g_list_length (liste = 0x6e6920) at glist.c: 767 767 glist.c: Aucun fichier ou répertoire de ce type. dans glist.c

Qu'est-ce que c'est?

Merci.

Répondre

0

Il semblerait qu'il essaie de trouver quelque chose (sur votre disque dur) qui n'existe pas. Est-ce tout le code?

2

Ceci est un plantage dans la glib, probablement parce que vous lui donnez un mauvais pointeur vers une liste. Le débogueur essaie de charger le code source pour vous montrer où il s'est écrasé, mais ne peut pas le trouver (probablement parce que vous avez simplement lié à la lib, sans même avoir la source à portée de main).

Utilisez la commande gdb up pour remonter dans la pile d'appels jusqu'à ce que vous atteigniez votre code et inspectez l'argument que vous avez passé à la fonction g_list_length().

2

Votre débogueur essaie de trouver le code source de GList pour vous aider à déboguer le problème. En général, la source ne sera pas installée. Vous devrez installer des paquets de débogage ou une source quelconque. Si vous utilisez un système Fedora, debuginfo-install glib2 le fera. Sur Debian ou Ubuntu, il peut y avoir un paquet pour ceci, se terminant éventuellement en -dbg?