Tengo una aplicación que estoy depurando y estoy tratando de entender cómo funciona gdb y por qué no puedo pasar por la aplicación a veces. El problema que estoy experimentando es que gdb se bloqueará y que el proceso al que está conectado pasará a un estado de inactividad cuando revise el programa. Después de que gdb se cuelga y tengo que matarlo para liberar el terminal (ctrl-C no funciona, tengo que hacer esto desde una ventana de terminal diferente obteniendo el id de proceso para esa sesión de gdb y usando kill -9).¿Por qué colgaría gdb?
Supongo que gdb se cuelga porque está esperando que la aplicación se detenga en la siguiente instrucción y de alguna manera la aplicación finalizó la ejecución sin que gdb lo identificara. Pero eso solo es especulación por el comportamiento que he observado hasta ahora. Entonces mi pregunta es si alguien ha visto este tipo de comportamiento antes y/o podría sugerir cuál podría ser la causa. Creo que eso podría ayudarme a mejorar mi estrategia de depuración.
En caso de que importe, estoy usando g ++ 4.4.3, gdb 7.1, ejecutándose en Ubuntu 10.04 x86_64.
¿Hay alguna caja de prueba mínima que pueda dar? Quiero decir, tal como está escrito, es muy difícil responder por qué podría estar sucediendo, aparte de "podría ser porque gdb tiene un error". – derobert
gracias por la sugerencia. En este momento, la aplicación tiene mucho código de biblioteca, pero veré si puedo hacer un pequeño caso de prueba que pueda publicar como ejemplo. –
Yo recomendaría usar un 'gdb' más reciente. La versión actual es ** 7.3 ** e hicieron un gran progreso. (y por cierto, usar un 'g ++' más reciente, es decir 4.6.2 también sería útil, ya que GCC también avanzó en la información de depuración). –