gawk: Debugging Concepts
14.1.1 Debugging in General
---------------------------
(If you have used debuggers in other languages, you may want to skip
ahead to Awk 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).