"); //-->
此选项在linux-2.6.10,linux-2.6.15,linux-2.6.19中都没有。
四:CONFIG_DEBUG_INFO这个选项一般要打开,下面引用《linux设备驱动程序第三版》的一段话。
“该选项将使内核的构造包含完整的调试信息。如果读者打算利用GDB调试内核,将需要这些信息。如果计划使用GDB,还应打开CONFIG_FRAME_POINTER选项。”
五:CONFIG_MAGIC_SYSRQ 5.1 打开方法①通过make menuconfig 配置
在系统运行时通过下列命令启动
echo 1 > /proc/sys/kernel/sysrq(没有验证)
5.2 验证因为一时想不到好的实验方法(让键盘死锁的方法,我在加载的驱动模块里面设置了一个死循环while(1),虽然键盘无法响应ctrl+alt+c也不响应,但是alt+sysrq+任意组合键也不响应),所以没有验证。
=======================================================================================
By 下家山 QQ 1209050967 上海松江文汇路928号258室 松江大学城 7/31/2012
上海索漫科技 http://www.xiajiashan.com 专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训
这个配置选项在《linux设备驱动程序第三版》中并没有介绍,因为linux2.6.10版本中没有,但,linux2.6.15和linux2.6.19中有(其他版本我没有去查证),通过这个配置选项,就会在printk 的同时打印出当前时间,这样可以看到kernel的运行时间,对调试也许有所帮助。
6.2如何打开PRINTK_TIME选项//slabtest.c
#include
#include
#include
unsigned char *slab_wr; /* I/O data buffer */
static int slabtest_init(void)
{
printk(KERN_EMERG "slab_wr address before call kmalloc:0x%08lx \n",slab_wr);
slab_wr = (unsigned char *)kmalloc(100,GFP_USER/*GFP_KERNEL*/);
printk(KERN_EMERG "slab_wr address affter call kmalloc :0x%08lx \n",slab_wr);
printk(KERN_EMERG "\nHello\n");
return 0;
}
static void slabtest_exit(void)
{
kfree(slab_wr);
printk(KERN_EMERG"\nGoodbye\n");
}
module_init(slabtest_init);
module_exit(slabtest_exit);
6.4测试结果!
红色部分即为printk时打印的当前时间。看来还是有点作用的。
但是,如果printk调用频繁,则会大大降低系统速度!
本文还没有涉及到KGDB相关调试技术,KGDB调试需要两台PC及两个串口,调试不是很方便,此部分工作本人只完成一半就搁浅了,目前还没有时间继续。另,在此想结识对KGDB有所研究或及其感兴趣的人士。
请与我联系:
QQ:408452271
Email:ximenpiaoxue4016@sina.com
2010-1-7 上海.松江
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
eleaction01 阅读:5407