7 Debugging

gdb is the official debugger in Linux. It is a flexible and capable debugger, but it only operates in line mode. This means there is no full screen mode, let alone a GUI mode.

In order for a program to be ``debuggable'', it needs to have extra symbolic tags. These tags indicate which address of the executable corresponds to which line in which file. This is why we used the -g option when we compiled and linked the program. If you forget to use the -g option, the executable file can still be debugged, but you will be reading assembly language opcodes.

To debug our test program, execute the following command:

gdb test

Note that this time, there is no ./ in front of test. This is because we are telling gdb exactly where to find an executable, it does not implicitly search for the file in the environment variable PATH.

In the debugger, the first command you need to learn is help. No, I am not kidding. Type help, and gdb will give you some top level selections. I suggest that you read the descriptions for ``breakpoints'', ``data'', ``files'', and ``running''.

For whose who want to have at least a full-screen (text mode) debugger, there is cgdb. This one is a little bit better, as it shows the source code being debugged in a text window. You still need to learn the gdb commands, but at least the tracking of the execution is more intuitive.

Copyright © 2006-08-28 by Tak Auyeung