"); //-->
作者:下家山(请尊重原创,转载请注明) http://www.xiajiashan.com
九.DEBUG_PREEMPT抢占调试技术
9.1 Preempt抢占调试技术的作用
选择此选项,kernel将使用一个调试变量,这个变量的值通过smp_processor_id()函数获取,当使用了一个不安全的“抢占”方法,kernel将打印此变量。即,内核将检测到“抢占计数器”溢出。
9.2 如何打开此选项这一选项需要在“Kernel Features”中打开[*] Preemptible Kernel(EXPERIMENTAL)选项才会出现在“Kernel hacking”中[*]Debug preemptible kernel(NEW)。
9.3 linux如何实现实时性十:DEBUG_KOBJECT调试技术
DEBUG_KOBJECT选项的作用,此选项打开后, kobiect(.ko)外部加载模块的调试信息将会送到syslog。因为syslog是一中很主流的调试技术,我想日后作为一个专题来讲,所以这里就略过!
哪位精通syslog相关工具请贴出来,或跟我发邮件!
十一:DEBUG_HIGHMEM调试DEBUG_HIGHMEM选项打开后,能够检查高端内存的错误。
哪位做过相关实验,请帮我补充进来。
十二:DEBUG_BUGVERBOSE调试 12.1 作用通过这个选项,在kernel打印出BUG()信息的同时打印此信息所在的文件名和行号。这是一个有用的选项。
12.2 如何打开该选项DEBUG_BUGVERBOSE的打开依赖于DEBUG_KERNEL和EMBEDDED,那么EMBEDDED在哪里打开呢?这个地方还真不好找,见init/kconfig
menuconfig EMBEDDED
bool "Configure standard kernel features (for small systems)"
help
This option allows certain base kernel options and settings
to be disabled or tweaked. This is for specialized
environments which can tolerate a "non-standard" kernel.
Only use this if you really know what you are doing.
而具体到make menuconfig在哪里呢?
=======================================================================================
By 下家山 Q群 75303301 上海松江文汇路928号258室 松江大学城 8/4/2012
上海索漫科技 http://www.xiajiashan.com 专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训
这样在“Kernel hacking”中就出来了
我通过测试发现,不管我是否打开此调试选项,调用BUG()和BUG_ON(1)都会打印出所在的文件及行号。
12.4 测试代码#include
#include
#include
static int scheduler_test_init(void)
{
BUG_ON(1);
printk(KERN_EMERG "\nHello\n");
return 0;
}
static void scheduler_test_exit(void)
{
printk(KERN_EMERG"\nGoodbye\n");
}
module_init(scheduler_test_init);
module_exit(scheduler_test_exit);
十三:DEBUG_IOREMAP调试
在linux2.6.15中此调试选项是针对PARISC(HP公司)处理器的,这里略过。
十四:DEBUG_FS调试哪位做过相关实验,请帮我补充进来.
十五:DEBUG_VM调试哪位做过相关实验,请帮我补充进来
十六:FRAME_POINTER调试FRAME_POINTER选项在你用外部调试器(如,GDB,KGDB等)时必须打开。
十七:RCU_TORTURE_TEST选项该选项涉及到RCU原理。官方资料见http://www.rdrop.com/users/paulmck/RCU/
“RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。”
摘自杨燚写的《Linux2.6内核中新的锁机制--RCU》。
本人没有用过,具体实现及测试略过。
十八:其他选项跟KGDB有关见其他文章。
十九:结束语本文还没有涉及到KGDB相关调试技术,KGDB调试需要两台PC及两个串口,调试不是很方便,此部分工作本人只完成一半就搁浅了,目前还没有时间继续。另,在此想结识对KGDB有所研究或及其感兴趣的人士。
请与我联系:
QQ:408452271
Email:ximenpiaoxue4016@sina.com
BBS: http://www.xiajiashan.com/
2010-1-7 上海.松江
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
eleaction01 阅读:4510