The Kernel Abstraction
The Kernel Abstraction
Debugging as Engineering
• Much of your time in this course will be spent
debugging
– In industry, 50% of software dev is debugging
– Even more for kernel development
• How do you reduce time spent debugging?
– Produce working code with smallest effort
• Optimize a process involving you, code,
computer
Debugging as Science
• Understanding -> design -> code
– not the opposite
• Form a hypothesis that explains the bug
– Which tests work, which don’t. Why?
– Add tests to narrow possible outcomes
• Use best practices
– Always walk through your code line by line
– Module tests – narrow scope of where problem is
– Develop code in stages, with dummy replacements for
later functionality
ABET
You can’t debug effectively without this: