Chapter 11. Debugging Tools
In the previous chapters, we've discussed how to set
up, configure, and use various preexisting free and open source
software components. Now that you are ready to work with your system,
you'll need some powerful debugging tools.
In this chapter, we discuss the installation and use of the main
software debugging tools used in the development of embedded Linux
systems. This discussion covers debugging applications with
gdb, tracing applications and system behavior,
performance analysis, and memory debugging. In addition, I briefly
review some of the hardware tools often used in developing embedded
Linux systems. Because the particular operating system on the target
makes little difference in the way the hardware debugging tools are
used, we do not discuss how to use them. I will, nevertheless,
suggest ways that you can use hardware tools to facilitate debugging
the software running in your embedded Linux system.
To best use the tools
discussed in this chapter, I strongly recommend the use of an
NFS-mounted root filesystem for your target. Among other things, this
enables you to rapidly update your software once
you've identified and corrected a bug. In turn, this
speeds up debugging, because you can continue debugging the updated
software much sooner than if you had to transfer the updated binary
manually to your target first. In essence, an NFS-mounted root
filesystem simplifies the updating and debugging process and,
therefore, reduces development time. In addition, NFS allows for
performance data generated on the target to be available immediately
on the host.
Though I cover the most important free and open source debugging
tools in this chapter, I do not cover all the debugging tools
available in Linux. The material covered in this chapter should,
nevertheless, help you make the best use of any additional Linux
debugging tools you may find on the Web or in your distribution.
Among the debugging tools I do not discuss are all the tools used for
kernel debugging. If you need to debug a kernel, have a look at
Chapter 4 of Linux Device Drivers.
|