OverviewNo matter how you approach it, Linux
debugging will always be complex. The first part of this Short Cut
examines some of these complexities as they relate to kernel
debugging and present ideas and methods to improve your debugging
skills, inside the kernel itself and then inside device drivers.
You begin by learning to use Kernel GNU Debugger (KGDB) to probe
the kernel. But because you cannot debug very early kernel startup
code with KGDB, we also show you how to work with a hardware debug
probe. For the examples in this section, we use a unit manufactured
by Abatron called the BDI-2000. Hardware debug probes are often
called JTAG probes, because they use a low-level communications
method first employed for boundary scan testing of integrated
circuits defined by the Joint Test Action Group (JTAG).
In the second part of this Short Cut, we continue our coverage of
GDB for debugging application code in user space. We extend our
coverage of remote debugging and the tools and techniques used for
this peculiar debugging environment.
This Short Cut includes Chapters 14 and 15
from the book Embedded Linux Primer by Christopher Hallinan
(0-13-167984-8). As such, it contains references to earlier and
later chapters that are not included in this Short Cut. Apart from
these references, the Short Cut is fully self-contained and is an
excellent choice for embedded Linux developers interested in
learning both kernel-level and application-level debugging
techniques.
Kernel Debugging Techniques
14.1 Challenges to
Kernel Debugging 4
14.2 Using KGDB
for Kernel
Debugging 6
14.3 Debugging the
Linux Kernel 14
14.4 Hardward-Assisted
Debugging 53
14.5 When It Doesn't
Boot 63
14.6 Chapter
Summary 69
Debugging Embedded Linux
Applications
15.1 Target
Debugging 72
15.2 Remote (Cross)
Debugging 73
15.3 Debugging with
Shared Libraries 80
15.4 Debugging Multiple
Tasks 87
15.5 Additional Remote
Debug Options 97
15.6 Chapter
Summary 99