Linux kernel debugging tips
Writing the code is not always the hardest aspect of kernel development. Debugging is the real bottleneck, even for experienced kernel developers. That said, most kernel debugging tools are part of the kernel itself. Sometimes, finding where the fault originated is assisted by the kernel via messages called Oops. Debugging then comes down to analyzing the message.
Oops and panic analysis
Oops are messages printed by the Linux kernel when an error or an unhandled exception occurs. It tries its best to describe the exception and dumps the callstack just before the error or the exception occurs.
Take the following kernel module, for example:
#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> static void __attribute__ ((__noinline__)) create_oops(void) { Â Â Â Â Â Â Â Â *(int *)0 = 0; } static int __init my_oops_init(void) { Â Â Â Â Â Â Â printk...