viernes, septiembre 25, 2009

El santo grial de la depuración es inminente

Hay algunas situaciones difíciles de depurar, por ejemplo cuando se pierde el control de un puntero que destruye la mitad de la memoria antes de causar una violación de segmento.
Si nunca han pasado por esto hay dos alternativas, o nunca han trabajado en C o son mucho más inteligentes que yo.
Lo cierto es que ese problema sería fácil de depurar con solo permitir que nuestro depurador nos deje ejecutar el programa en reverso, así solo ejecutamos el programa hacia atrás mientras vamos recuperando toda nuestra memoria, hasta el punto donde el puntero se desboca, y seguramente estaremos viendo porque se desbocó.
El problema siempre ha sido que eso es mucho más fácil de pensar que de implementar, porque lo que se requiere es prácticamente una máquina del tiempo para lograrlo.
Pues aunque Ud. no lo crea, se supone que la versión 7 de GDB permitirá la ejecución en reversa.  Lo mejor es que esta versión está prometida para este mes, por lo que asumo que es inminente su distribución, no tengo idea del precio a pagar por esta funcionalidad, pero de seguro no será barata, claro que podremos ejecutar los programas desde el final hasta el comienzo.
Filosofando un poco: un programa que se ejecuta hacia atrás se alimenta de soluciones y genera problemas, así que es mejor no dedicarle muchos recursos a esta tecnología.
Ahora en serio, si esta característica algún día fuera barata podríamos resolver algunos problemas clásicos de sistemas operativos con mucha facilidad, por ejemplo ya no nos preocuparíamos por los deadlocks, porque solamente hay que retroceder el programa adecuado un poquito hasta que se libere el recurso que causa la tranca.

No hay comentarios.: