首页 > 使用kgdb > kgdb内核选项配置

kgdb内核选项配置

2010年6月28日 发表评论 阅读评论

从Linux 2.6.25起, KGDB被集成到Linux内核中,这使得kgdb的使用变得简单和轻松。

运行如下命令启动配置内核脚本。

$ make menuconfig

1 KGDB必须使能的内核选项:

?View Code EXPERIMENTAL
CONFIG_EXPERIMENTAL = y
 Location:
	-> General setup 
	   -> Prompt for development and/or incomplete code/drivers
CONFIG_KGDB = y 
 Location:    
	-> Kernel hacking   
	   -> KGDB: kernel debugger
?View Code KGDB_SERIAL_CONSOLE
CONFIG_KGDB_SERIAL_CONSOLE = y (使用串口进行通信)
 Location:    
	-> Kernel hacking   
	   -> KGDB: kernel debugger
              -> KGDB: use kgdb over the serial console

2 其它相关内核选项:

2.1 建议关闭的选项

?View Code DEBUG_RODATA
CONFIG_DEBUG_RODATA = n
该选项是将内核的一些内存区域空间设置为只读,这样可能导致kgdb的
设置软断点功能失效。所以推荐将该选项关闭。
 
Location: 
     -> Kernel hacking

2.2.2 建议打开的选项

?View Code KGDB_LOW_LEVEL_TRAP
CONFIG_KGDB_LOW_LEVEL_TRAP = y                                                               
使能该选项可以kgdb不依赖notifier_call_chain()机制来获取断点异常,
这样就可以对notifier_call_chain()机制实现相关的函数进行单步调试。
Depends on: KGDB [=y] && (X86 [=y] || MIPS [=MIPS])
Location: 
     -> Kernel hacking  
       -> KGDB: kernel debugger (KGDB [=y])

关于KGDB_LOW_LEVEL_TRAP的缘由详情,可参考这里

?View Code DEBUG_INFO
CONFIG_DEBUG_INFO = y
该选项可以使得编译的内核包含一些调试信息,使得调试更容易。
Location: 
     -> Kernel hacking
?View Code FRAME_POINTER
CONFIG_FRAME_POINTER = y
该选项将使得内核使用帧指针寄存器来维护堆栈,从而就可以正确地执行堆栈回溯,即函数调用栈信息。
Location: 
     -> Kernel hacking
?View Code MAGIC_SYSRQ
CONFIG_MAGIC_SYSRQ = y (如果你选择了KGDB_SERIAL_CONSOLE,这个选项将自动被选上)
激活"魔术 SysRq"键. 该选项对kgdboc调试非常有用,kgdb向其注册了‘g’魔术键来激活kgdb 。
 
Location: 
     -> Kernel hacking

当你想手动激活kgdb时,你可以触发SysRq的g键, 如:

$ echo "g" > /proc/sysrq-trigger

本文地址:
http://www.kgdb.info/enable_kgdb_option/
版权所有 © 转载时必须以链接形式注明作者和原始出处!