Summary
In this chapter, we learned about techniques to debug issues in the Linux kernel. Debugging the Linux kernel is different from debugging applications because of its affinity to hardware and the sheer complexity of the code base. We can’t use the lessons learned in Chapter 8, Building, Debugging, and Launching Applications on Startup, to debug the Linux kernel, and need to use other techniques that we covered in this chapter. However, before we can use any specific techniques, we need to understand the different types of issues that can be encountered in the Linux kernel, including both functional and performance issues. For example, we learned about a kernel oops, which is a specific type of issue in the Linux kernel. Afterward, we learned how to perform traditional step-through debugging of the Linux kernel using kgdb, which is significantly different from gdb. Finally, we learned about ftrace and lockdep, which are two tools included in the Linux kernel that we can...