On 4 Aug 2003, Cesar Rincon wrote:
> On Mon, 2003-08-04 at 04:00, gustavo wrote:
>
> > Molesto devuelta con mi problema con el debugger DDD, ya no se q'
> > probar, sienpre entra en las funciones en ves de saltar
> > a la siguiente linea cuando hago un `Step'.
>
> Nunca he usado DDD pero, como ya te dec�a hace unos d�as, en GDB el
> comando 'step' debe funcionar *siempre* como indicas: entrando en las
> subrutinas (excepto cuando la subrutina est� en una biblioteca enlazada
> sin informaci�n de debug). El comando 'next' es el que salta las
> subrutinas.
A mi me parece que eso no es cierto. Todos los debugger son susceptibles
de perderse. Yo creo que un puntero descontrolado puede llegar a afectar
al correcto funcionamiento del debugger. No es algo corriente per puede
llegar a pasar.
Yo uso para depurar un sistema de trazas. Evidentemente gdb es mejor
pero el sistema de trazas funciona bien siempre. Repito que a mi todos
los depuradores me han fallado en alguna ocasi�n con alg�n tipo de
error. Por eso entre otros motivos he perfeccionado este sistema.
Te volcar� informaci�n relativa a la localizaci�n de la traza.
Puedes usarlo poniendo en el c�digo cosas como:
TRAZA("Var1=%s, Var2=%s, contador=%d", cadena1, cadena2, cont);
No es necesario incluir informaci�n de localizaci�n ya que la traza
se acompa�a de esa informaci�n.
/******************************************************************
* traza.h (solo sirve para depurar errores
*
* No existe ningun 'traza.c' Para usarlo solo hay
* que colocar TRAZA ("...", .., ..); a lo printf.
*
* Abre y cierra el fichero a cada traza para garantizar
* la operaci�n en caso de terminaci�n an�mala del programa.
* Esto es muy seguro pero hace que el programa vaya mucho
* m�s ento cuando el sistema de trazas est� activado.
* ***************************************************************/
#ifndef _TRAZA_H
#define _TRAZA_H
#define _(String) (String)
/** Comentar la linea siguiente para desactivar trazas **/
#define ENABLE_TRAZA 1
#ifdef ENABLE_TRAZA
FILE *ftraza;
char filenameTraza[80];
#define TRAZA(args...) sprintf(filenameTraza, "/tmp/traza_%d", geteuid());\
ftraza=fopen(filenameTraza, "a");\
if (ftraza==NULL){\
perror(""); \
fprintf(stderr,_("Error abriendo fichero
'/tmp/traza'"));\
ftraza=stderr;\
}\
fprintf(ftraza, "%d_%s:%d in %s(): ", getpid(),
__FILE__, __LINE__, __FUNCTION__ ); \
fprintf(ftraza, args);\
fprintf(ftraza, "\n");\
fclose(ftraza)
#else
#define TRAZA(args...) /* Definici�n vac�a deja sin efecto las trazas */
#endif /* ENABLE_TRAZA */
#endif /* _TRAZA_H */
--
Un saludo
Antonio Castro
/\ /\ Ciberdroide Inform�tica
\\W// << http://www.ciberdroide.com >>
_|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . [EMAIL PROTECTED] |
+()()()---------()()()--------------------+