2012-09-10 9 views
5

Por lo que sé, se llama a terminate() cuando hay algún problema con el manejo de excepciones (generalmente no se detecta). Lo que obtuve es solo una línea de error terminate called recursively.terminar llamado recursivamente

Tras Google desde hace algún tiempo me encontré con un montón de ejemplos de

terminate called after throwing an instance of ... terminate called recursively 

pero no es mi caso. Como no tengo esta pista sobre el tipo de excepción, me pregunto qué significa este terminate called recursively en sí mismo.

Lo siento, no puedo proporcionar el código, por lo que cualquier adivinación será útil. Estoy compilando con g ++ 4.5.2 bajo Ubuntu 11.04.

Muchas gracias, Alex.

+2

Sin código no pudimos decir nada. Puede ser que haya terminado el controlador, que escribe "terminar llamado de forma recursiva". – ForEveR

+0

Gracias @ForEveR. No, no estoy usando set_terminate. – Shamdor

+0

Intenta depurar, usa gdb y core. – ForEveR

Respuesta

14

Podría ser que algún código arroje una excepción que no capte, lo que significa que se llamará terminate. Terminar el programa significa que se pueden llamar a los destructores de objetos, y si hay una excepción en uno de ellos, entonces se llamará "recursivamente" terminate.

+0

Todavía no encontré el problema, pero parece razonable. ¡Gracias! – Shamdor

+1

Esta no es la respuesta. Cuando un destructor arroja una excepción durante el desenrollado de la pila de la excepción antera, el proceso terminará inmediatamente. Pruébalo y mira. – jcoffland