2010-08-13 2 views
3

im un peu débutant peu sur gdb va donc ici:Gdb ne donne aucune pile sur un simple std :: string d'exception non interceptée

Im travaillant sur le fonctionnement de tests unitaires cpp en ce moment. J'essaye de construire des objets de chaîne avec des paramètres non valides comme null_char mais le programme prévoit des exceptions :). Lorsque j'essaie de déboguer l'application en utilisant gdb, je tape bt après le crash, mais cela ne me donne aucun message de pile. Des idées pour expliquer pourquoi cela pourrait arriver? Merci d'avance.

+1

Avez-vous compilez avec '-g'? – David

+0

le débogage du fichier de base, avec une version ou version debug? – DumbCoder

+0

J'utilise un script de compilation par défaut qui construit le projet en mode débogage. – LostMohican

Répondre

1

Ajoutez l'option -g à votre ligne de commande du compilateur pour ajouter des symboles de débogage. Cela aide beaucoup avec gdb.

+1

et -O0 aide beaucoup trop - parfois optimisations font l'codepath vu dans la mise au point tout à fait « sauvage » =) – rasjani

+0

Merci pour cette astuce, c'est génial! –

+0

Je vais dans le code étape par étape et je pense que je suis en mode débogage donc il n'y a pas d'optimisations je pense .. – LostMohican

2

Peut-être que la pile est tout simplement pas utile, car l'exception est jamais pris? Soyez conscient des points d'arrêt dans gdb:

catch throw 

casse lorsqu'une exception est levée.

catch catch 

casse lorsqu'une exception est interceptée.

Questions connexes