+----------+ |TRUCOS DDD| +----------+ DDD Compilar y ejecutar ======================= gcc -g -o ejemplo ejemplo.c // -g para que sea debugable ddd ejemplo & // & para que la terminal no se quede pillada // si nos olvidamos el &: Ctrl+Z fg Kill DDD ======== Si el ddd se queda colgado, desde una terminal: killall -9 ddd DDD Shortcuts ============= Ctrl + - Muestra la variable seleccionada en el codigo en un display. Curiosamente no me va con el '-' del teclado numerico pero si con el '-' del teclado alfanumerico. Util cuando doble-clicar no va a la primera. Alt + L Muestra todas las variables locales en la ventana "display". Alt + U Muestra los argumentos con los que se ha invocado la funcion acutal. DDD Options =========== Para ver el codigo ensablador del programa: ddd --disassemble ... Para que no se mezclen los printf() i scanf() con la consola del gdb): ddd --exec-window ... para desactivarlo: ddd --no-disassemble --no-exec-window ... Para abrir estas ventanas (la del ensamblador y la de la terminal de ejecucion) una vez ya hemos abierto el ddd: - Alt + 4 : Ensamblador - Alt + 9 : Ventana separada de la ejecucion del programa. DDD Preferences =============== Suprimir los molestos warnings del ddd que aparecen en la terminal: Edit => Preferences => General => Suppress X warnings. Que los nuevos displays se vayan poniendo a la derecha en lugar de abajo: Edit => Preferences => Data => Placement: [X] Left to right Que no haga falta que el puntero este sobre una area para escribir alli Edit => Preferences => Startup => Keyboard Focus: [X] Click to Type SEGMENTATION FAULT (CORE DUMPED) ================================ Si un programa da cualquier cosa que genere un "(core dumped)" "Segmentation Fault" o "Floating point exception" - Ejecutar el ddd con el programa en cuestion i dar a "Run" sin breakpoints. - Al producirse el core dumped aparecerĂ  una flecha roja (en lugar de la tipica flecha verde) en la linea donde se ha producido. - Si es "segmentation fault" buscar un vector (ej: "v[i]") poned el cursor sobre la 'i' y vereis que vale un valor no permitido (ej: -1 o 22365). (Si no hay nada de vectores en esa linea habra algun puntero que apunta a una posicion de memoria incorrecta.) - Si es "floating point exception" provablemente estais dividiendo por 0 o haciendo el modulo 0. De nuevo poner el cursor sobre las variables para ver que valores tenian en el momento de petar. Debugando ========= Si nada mas empezar le damos al boton (breakpoint), nos creara un breakpoint en la primera instruccion del main(). Para empezar la ejecucion: [Run] A partir de allĂ­: [Next] para ejecutar la siguiente instruccion o [Step] para cuando en la linea actual hay una llamada a funcion "entrar" dentro del codigo de la funcion. [Cont] continua la ejecucion hasta el siguiente "Stop" o hasta el final del programam. DDD Teclas rapidas ================== Una vez hecho [Run], clicad en el area de codigo C y podeis usar estas teclas: F5 Step F6 Next F9 Continue (No hagais [Step] en printf(), scanf() o otras funciones que no sean vuestras) Resetear DDD ============ Como si nunca se hubiera ejecutado: rm -Rf ~/.ddd ---------------------------------------------------------------------- By: Manel Guerrero Version: 0.0 Last version available at: http://personals.ac.upc.edu/guerrero/fo.html Sources: http://www.gnu.org/software/ddd/manual/html_mono/ddd.html ----------------------------------------------------------------------