2011-08-16 5 views
-2

J'écris un code C++ dans la plate-forme ROOT. Je reçois l'erreur suivante:Que signifie cette erreur?

*** Break *** segmentation violation 
gdb not found, need it for stack trace 
Root > Function main() busy flag cleared 

Je veux juste savoir ce que cela signifie (en général).

+2

Violation de segmentation - généralement une sorte d'erreur d'accès mémoire (pointeur run amok). gdb non trouvé - Ceci est le débogueur gnu. Il semble ne pas être installé ou n'est pas dans le chemin du système. – arunkumar

Répondre

3

Généralement, cela signifie que vous avez écrit (ou peut-être lu) de la mémoire pour laquelle vous n'avez pas l'autorisation. Soit c'est juste une mémoire invalide ou (si la plateforme supporte un tel concept) c'est en dehors de la mémoire que vous possédez.

Une cause fréquente de ceci est de libérer un pointeur, puis de l'utiliser à nouveau.

Foo * pFoo = new Foo(); 
pFoo->Bar(); // should be fine. 
delete pFoo; // pFoo now points to memory that may or may not still be an actual Foo. 
pFoo->Bar(); // undefined behavior. 
3

Généralement, "violation de segmentation" signifie que vous avez accédé à une partie de la mémoire qui ne vous a pas été allouée. Habituellement, un pointeur parasite est la raison de cela.

Le reste est un message spécifique à Linux concernant un gdb manquant (ce qui serait utile pour comprendre le problème).