viernes, 18 de julio de 2008

Depurando en Windows

Cuantos de nosotros en nuestra vida diaria al estar programando, nos encontramos con infinidad de errores, en la mayoria provocados por nosotros mismos, o simplemente por no saber el funcionamiento correcto de algo. En nuestra cabeza esta el problema vueltas y vueltas tratando de saber que o cual cosa provoca el "ERROR".

A la hora de depurar en windows es casi imposible utilizar un depurador, para los viejos programadores como yo, que estaba acostumbrado al debugger de clipper, y ahora al depurador de (x)harbour, son una maravilla si vas a depurar cualquier programa de consola. Pero al momento de tratar de depurar un programa windows, para atrapar los errores no es lo mismo, ya que el comportamiento normal del programa no es el mismo, que al utilizar el depurador, ya sea por que la ventana pierde el foco, y se lanzan ciertos eventos que sin depurar no se lanzaran.

Como programadores recurrimos comunmente a los MessageBox, en Fivewin MsgInfo, MsgAlert, de igual manera al hacer las llamadas a esta funciones para ver el valor de cierta variable, o saber si se cumplio cierta condicion., cambiamos el entorno de ejecucion de nuestro programa y en algunas ocasiones el resultado puede ser ventanas informativas con mensajes interminables en nuestra pantalla, que provocan el truene de nuestra aplicacion y en algunas ocasiones son bastante molestas. Otro caso muy usado es MsgBeep, es muy buena opcion en algunos casos, sobre todo si quieres saber, si se ejecuto cierta funcion o se cumplio cierta condicion, pero no para ver el valor de una variable, o ver la pila de llamadas(CALLSTACK).

OutputDebugString()

Esta funcion de Api de Windows nos provee de manera sencilla lo que nosotros necesitamos para poder depurar nuestro programa. La cual tambien podemos llamar desde Fivewin.

Ejemplo:

IF File( "test.txt" )
   OutputDebugString( "El archivo existe" + hb_osnewline() )
ELSE
   OutputDebugString( "El archivo no existe" + hb_osnewline() )
ENDIF

Al incluir esto en nuestro codigo fuente realmente no estaremos viendo nada, en primer lugar antes de ejecutar nuestro programa debemos tener en ejecucion dbwin32.exe, este programa se encarga de mostrar en pantalla la informacion pasada como parametro a la funcion OutputDebugString().





Descarga:

DBWIN32.zip

No hay comentarios:

Publicar un comentario