gawk: Debugging Concepts

 
 14.1.1 Debugging in General
 ---------------------------
 
 (If you have used debuggers in other languages, you may want to skip
 ahead to SeeAwk Debugging.)
 
    Of course, a debugging program cannot remove bugs for you, because it
 has no way of knowing what you or your users consider a "bug" versus a
 "feature."  (Sometimes, we humans have a hard time with this ourselves.)
 In that case, what can you expect from such a tool?  The answer to that
 depends on the language being debugged, but in general, you can expect
 at least the following:
 
    * The ability to watch a program execute its instructions one by one,
      giving you, the programmer, the opportunity to think about what is
      happening on a time scale of seconds, minutes, or hours, rather
      than the nanosecond time scale at which the code usually runs.
 
    * The opportunity to not only passively observe the operation of your
      program, but to control it and try different paths of execution,
      without having to change your source files.
 
    * The chance to see the values of data in the program at any point in
      execution, and also to change that data on the fly, to see how that
      affects what happens afterward.  (This often includes the ability
      to look at internal data structures besides the variables you
      actually defined in your code.)
 
    * The ability to obtain additional information about your program's
      state or even its internal structure.
 
    All of these tools provide a great amount of help in using your own
 skills and understanding of the goals of your program to find where it
 is going wrong (or, for that matter, to better comprehend a perfectly
 functional program that you or someone else wrote).