Debugging Linux Kernel in Deep Part 2
KGDB, KDB, GDB
User space processes can be debugged using gdb. With gdb you can
-
single-step,
-
stop,
-
resume,
-
put break-points,
-
inspect memory and variables,
-
look through call stack information
What if we can use gdb on running Linux Kernel.
Problem:
How can a gdb debug running kernel as it is just a user space process.
Solution:
Client/Server Architecture
User space programs can be debugged remotely using the combination of gdbserver on the target machine and gdb on the host machine/development machine.
The Linux kernel has a GDB Server implementation called KGDB. It communicates with a GDB client over network or serial port connection
In this course we will learn:
-
How to setup KGDB
-
Various ways of getting the target into development machine
-
Setting Breakpoints
-
Printing and Setting Variables
-
Using a single serial port for both kgdb and console messages
-
Getting the kernel messages in gdb window
-
Debugging Linux Kernel Modules (In-Tree, out of tree)
-
Use of GDB Scripts present in the Linux Kernel