Antonio Castro dixit:

> La traza se expande en el lugar donde tu la pones. Antes de eso todo
> el entorno de ejecuci�n es exactamente el mismo. A mi me ha pasado
> con depuradores varias cosas. El depurador se va a freir pu�etas o
> se despista y hace las cosas mal, o lo peor de todo: El programa
> desde el depurador funciona exactamente como tu esperabas.

A todos nos ha pasado, supongo.  En el momento en que corrompes el
stack o el heap, ya te puedes olvidar de toda consistencia en el
proceso.  Los programadores de Java se r�en de nosotros, programadores
de C/C++, cuando nos pasan estas cosas.

(Lo cual es apenas justo: nosotros nos re�mos de ellos con bastante
mas frecuencia :-)

> El gran problema del printf es que no tienes la garant�a de que esa
> traza aparezca. Violaci�n de segmento por ejemplo te dejar� los
> datos de salida perdidos en el buffer de salida. printf por las
> buenas no sirve. Ni siquiera sirve el fflush(). Yo abro y cierro a
> cada salida de la traza para garantizar completamente su salida.

Es correcto.  Aunque en UNIX tienes syslog(3), que no tiene ese
problema.  Yo normalmente no lo puedo usar directamente, porque
generalmente mi c�digo debe poder compilar bajo el sistema operativo
cuyo nombre no ha de ser mencionado.

En cualquier caso, te informo que tu include de traza ya ha pasado a
formar parte de mi arsenal, con la atribuci�n apropiada :-)

 -CR

Responder a