Outline for May 31, 2002

Handouts: The Dynamic Debbugger gdb
Reading: Johnsonbaugh and Kalin, pp. 679-702 (appendix of useful functions)


  1. Greetings and felicitations!
  2. Miscellaneous
    1. terminate program (exit); include <stdlib.h>
    2. sort array of data (qsort); include <stdlib.h>
    3. time of day (time, ctime); include <time.h>
    4. execute cvommand (system); include <stdlib.h>
  3. Debugging
    1. programs have bugs; find and fix them
    2. static debugging: insert debugging code into source, recompile and run
    3. dynamic debugging: look at the program as it runs, observing (and maybe changing) variables, etc.
  4. Static debugging
    1. using printf to print variable values; mention %p (prints pointer value, usually as a hex integer)
    2. using printf to print where you are (ie, on function entry printf("in function\n");
    3. #ifdef DEBUG ... #endif around the printfs so you can leave them in the source if you need them again
    4. assert(x) macro: assert(0 <= i && i <= n) causes program to exit with error message if (0 <= I && I <= n) is false; must include <assert.h>. To delete, say #define NDEBUG and they will not be in the compiled code.
  5. Dynamic debugging
    1. debugging tool instruments executable program so it can be stopped, examined, altered, and continued interactively
    2. go through the handout
    3. mention the "where" command which shows you the program stack

ECS 30-A, Introduction to Programming
Spring Quarter 2002
Email: cs30a@cs.ucdavis.edu