Debugging the Linux Kernel
Debugging is an important skill for an embedded software developer to master. We learned how to debug Linux userspace applications in Chapter 8. However, due to the nature of embedded systems, debugging the Linux kernel is different.
Custom hardware in embedded systems may require custom drivers or modifications directly to the Linux kernel. Additionally, the nature of the final application may require that the embedded system operate optimally. Thus, it may not be sufficient for the embedded software, specifically the Linux kernel and corresponding drivers, to be functional. Instead, they must also be performant.
This chapter aims to teach the different mechanisms to debug the Linux kernel, for both functionality and optimal performance. First, we will learn about functional and performance issues encountered when using the Linux kernel in an embedded system.
Second, we will understand the hardware and software tools that can be used to perform...