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] | +()()()---------()()()--------------------+