Kernel developers and experienced system adminstrators. The tutorial
assumes a good working knowledge of UNIX systems administration and
the C programming language. A knowledge of kernel internals will be
helpful, but is not essential. Depending on prior experience,
participants will learn to locate and either fix or report kernel
This tutorial will show debugging techniques on live systems. The
operating system for most of the tutorial will be FreeBSD, but it will
explain the (relatively small) differences in NetBSD and OpenBSD. The
course material, over 100 pages long, is a draft of a forthcoming book
on the subject.
- How and why kernels fail.
- Understanding log files: dmesg, /var/log/messages.
- Using common tools for debugging a running system: ps, netstat, top.
- Building a kernel with debugging support: the options.
- Preparing for dumps: dumpon, savecore.
- Demonstration: panicing and dumping a system.
- Preliminary dump analysis (non-technical, without sources).
- The assembler-level view of a C program.
- Introduction to the kernel source tree.
- Analysing panic dumps with gdb (technical).
- On-line kernel debuggers: ddb, gdb.
- Remote debugging with gdb, using serial lines, Ethernet and
- Debugging a running system with gdb.
- If time permits, a demonstration of some of these topics on NetBSD
and OpenBSD systems.
speaker: Greg Lehey
location: Simard 422