Knowing how to use GDB for interactive debugging is a useful tool in the embedded developer's tool-chest. It is a stable, well-documented, and well-known entity. It has the ability to debug remotely by placing an agent on the target, be it gdbserver for applications or kgdb for kernel code, and although the default command-line user interface takes a while to get used to, there are many alternative frontends. The three I mentioned were TUI, DDD, and Eclipse CDT, which should cover most situations, but there are other frontends around that you can try.
A second and equally important way to approach debugging is to collect crash reports and analyze them offline. In this category, we looked at application core dumps and kernel Oops messages.
However, this is only one way of identifying flaws in programs. In the next chapter, I will talk about profiling and tracing as...