说到内核开发,不得不说到的一个工具就是kgdb,它可以用来调试panic的程序,接管系统。
由于网上对freebsd上的kgdb使用总结较少,今天特总结如下,欢迎大家指正。
首先,查看系统是否生成了core文件,cd 到/var/crash下,如果有vmcore.*文件则存在此文件,这就是panic生成的文件,接下来我们要调试的文件。
然后,执行命令$kgdb /boot/kernel/kernel vmcore.0,则进入到kgdb命令行,用过gdb的玩家应该对这个比较熟悉了。
bt 查看panic的栈地址, c继续执行,r程序运行起来等等类似于gdb中的命令这里大部分仍然好使;info thread 查看所有线程,此命令会列出kgdb分配的id,线程id和pid;thread $KGDB_THREAD_ID,等等和gdb基本相似。