第四章 内核调试技术
内核调试技术支持
make menuconfig对内核进行配置
在kernel hacking这一项中包含了一些内核的调试支持
makemenuconfig之后就会看到kernel hacking选项
一些内核调试选项有如下说明:(通过搜索找到的)
CONFIG_DEBUG_KERNEL -> kernel hacking->Kernel debugging
这个选项只是使其他调试选项可用; 它应当打开, 但是它自己不激活任何的特性.
CONFIG_DEBUG_SLAB -> kernelhacking->Debug slab memory allocations
这个重要的选项打开了内核内存分配函数的几类检查; 激活这些检查, 就可能探测到一些内存覆盖和遗漏初始化的错误. 被分配的每一个字节在递交给调用者之前都设成 0xa5, 随后在释放时被设成 0x6b. 你在任何时候如果见到任一个这种"坏"模式重复出现在你的驱动输出(或者常常在一个 oops 的列表), 你会确切知道去找什么类型的错误. 当激活调试, 内核还会在每个分配的内存对象的前后放置特别的守护值; 如果这些值曾被改动, 内核知道有人已覆盖了一个内存分配区, 它大声抱怨. 各种的对更模糊的问题的检查也给激活了.
CONFIG_DEBUG_PAGEALLOC -> kernelhacking->Debug page memory allocations
满的页在释放时被从内核地址空间去除. 这个选项会显著拖慢系统, 但是它也能快速指出某些类型的内存损坏错误.
CONFIG_DEBUG_SPINLOCK -> kernelhacking->Spinglock and rw-lock debugging:basic checks
激活这个选项, 内核捕捉对未初始化的自旋锁的操作, 以及各种其他的错误( 例如 2 次解锁同一个锁 ).
CONFIG_DEBUG_SPINLOCK_SLEEP -> kernel hacking->Spinglock debugging:sleep-inside-spinlockchecking
这个选项激活对持有自旋锁时进入睡眠的检查. 实际上, 如果你调用一个可能会睡眠的函数, 它就抱怨, 即便这个有疑问的调用没有睡眠.
CONFIG_INIT_DEBUG
用__init (或者 __initdata) 标志的项在系统初始化或者模块加载后都被丢弃. 这个选项激活了对代码的检查, 这些代码试图在初始化完成后存取初始化时内存.
CONFIG_DEBUG_INFO -> kernelhacking->Compile the kernel with debug info
这个选项使得内核在建立时包含完整的调试信息. 如果你想使用 gdb 调试内核, 你将需要这些信息. 如果你打算使用 gdb, 你还要激活 CONFIG_FRAME_POINTER.
CONFIG_MAGIC_SYSRQ -> Kernel-->hacking Magic SysRq key
激活"魔术 SysRq"键. 我们在本章后面的"系统挂起"一节查看这个键.
CONFIG_DEBUG_STACKOVERFLOW -> General setup -->Check forstack overflows
CONFIG_DEBUG_STACK_USAGE -> kernel hacking->Stackutilization instrumentation
这些选项能帮助跟踪内核堆栈溢出. 堆栈溢出的确证是一个 oops 输出, 但是没有任何形式的合理的回溯. 第一个选项给内核增加了明确的溢出检查; 第 2 个使得内核监测堆栈使用并作一些统计, 这些统计可以用魔术 SysRq 键得到.
CONFIG_KALLSYMS -> General setup -->Configure standard kernel features(for smallsystems)--->Load all symbols for debugging/ksymoops
这个选项(在"Generl setup/Standard features"下)使得内核符号信息建在内核中;缺省是激活的. 符号选项用在调试上下文中; 没有它, 一个 oops 列表只能以 16 进制格式给你一个内核回溯, 这不是很有用.
CONFIG_IKCONFIG -> Generalsetup -->Kernel .config support
CONFIG_IKCONFIG_PROC
这些选项(在"Generl setup"菜单)使得完整的内核配置状态被建立到内核中, 可以通过 /proc 来使其可用. 大部分内核开发者知道他们使用的哪个配置, 并不需要这些选项(会使得内核更大). 但是如果你试着调试由其他人建立的内核中的问题, 它们可能有用.
CONFIG_ACPI_DEBUG -> Powermanagement and ACPI options -->ACPI (Advanced Configuration and PowerInterface) Support-->Debug Statements
在"Power management/ACPI"下. 这个选项打开详细的ACPI (Advanced Configuration and Power Interface) 调试信息, 它可能有用如果你怀疑一个问题和 ACPI 相关.
CONFIG_DEBUG_DRIVER -> DeviceDrivers-->Generic Driver Options-->Driver Core verbose debug message
在"Device drivers"下. 打开了驱动核心的调试信息,可用以追踪低层支持代码的问题. 我们在第 14 章查看驱动核心.
CONFIG_SCSI_CONSTANTS -> Device Drivers-->SCSI device support-->Verbose SCSI error reporting (kernel size +=12K)
这个选项, 在"Device drivers/SCSI device support"下, 建立详细的 SCSI 错误消息的信息. 如果你在使用 SCSI 驱动, 你可能需要这个选项.
CONFIG_INPUT_EVBUG -> DeviceDrivers-->Input device support--->Event debugging
这个选项(在"Device drivers/Input device support"下)打开输入事件的详细日志. 如果你使用一个输入设备的驱动, 这个选项可能会有用. 然而要小心这个选项的安全性的隐含意义: 它记录了你键入的任何东西, 包括你的密码.
CONFIG_PROFILING -> Generalsteup--->OProfile system profiling(EXPERIMENTAL)
这个选项位于"Profiling support"之下. 剖析通常用在系统性能调整,但是在追踪一些内核挂起和相关问题上也有用.
通过打印日志
printk通过附加不同的日志级别,可让printk根据这些消息的严重性程度对消息进行分类。表示的日志级别的宏会展开围一个字符串,在编译的时候由预处理器将他和消息文本拼接在一起。
KERN_EMERG:用于紧急事件消息,他们一般用于系统崩溃之前的提示消息
KERN_ALERT:用于需要立即采取动作的情况。
KERN_CRIT:临界状态,通常涉及严重的硬件或者软件操作错误。
KERN_ERR:报告硬件错误
KERN_WARNING:对可能出现的问题进行警告
KERN_NOTICE:有必要进行提示的正常情况
KERN_INFO:提示信息,用于打印出他们找到的硬件信息
KERN_DEBUG:用于调试
当优先级小于console_loglevel的时候才会显示出来,console_loglevel初始值是KERN_WARNING,可以通过klog –c 来改变
可参考如下代码
void __init chr_dev_init(void)
{
dev_tdev;
dev= MKDEV(200, 0);
if(register_chrdev(200,"leok", &chr_dev) != -1)
{
printk(KERN_CRIT"registerchr_dev success\n");
}
else
{
printk(KERN_ALERT"registerchr_dev failed\n");
}
printk(KERN_EMERG"chr_devinitialize and acccess\n");
return;
}
自己先搞了一个内核源码
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
本来是想搞一下2.6.38的内核代码,但是内核有bug,make的时候编译不通过
出现如下问题:
arch/x86/kernel/entry_32.S: Assemblermessages:
arch/x86/kernel/entry_32.S:1422: Error:.size expression does not
evaluate to a constant make[3]: ***[arch/x86/kernel/entry_32.o]
Error 1
最后的解释是:
kernel的维护者说,这是一个已知的bug:
http://groups.google.com/group/linux.kernel/browse_thread/thread/c3ed96dd55b5e930
之后wget了2.6.34内核代码
进入到自己wget 源码的目录,然后make menuconfig 出现了,如下问题:
the ncurses libraries找不到,之后采取的办法是:
sudoapt-get install libncurses5-dev 自己安装一个这个库。
linux驱动基础开发3——linux 内核配置机制(makemenuconfig、Kconfig、makefile)讲解
http://blog.csdn.net/gooogleman/article/details/7312195
分享到:
相关推荐
机械设计:chapter eight chain drives.ppt
机械设计:chapter seven belt drives.ppt
Device Profile Drives and Motion Control的子协议。。。
FX2N communicating to 4 Mitsu Drives A500 and E500 series.zip三菱PFX2N communicating to 4 Mitsu Drives A500 and E500 series.zip三菱PFX2N communicating to 4 Mitsu Drives A500 and E500 series.zip三菱PFX...
Electrical drives convert in a controlled manner, electrical energy into mechanical energy. Electrical drives comprise an electrical machine, i.e. an electro-mechanical energy converter, a power ...
Electric Motors and Drives ( Fundamentals,Types and Applications)第三版
Fund of Drives Fund of Drives
CANopen协议402, Device Profile Drives and Motion Control
Chapter 4 PCI Bus Overview 71 Chapter 5 AGP Bus Overview 91 Chapter 6 LPC Bus and Firmware Hub 107 Chapter 7 Chipset Component Overview 140 Chapter 8 Main System Memory 157 Chapter 9 Cache Systems 186...
vector control and dynamics of AC drives(英文完整版) 作者 D. W. Novotny, T. A. Lipo 出版商 Oxford University Press, 1996 ISBN 0198564392, 9780198564393
Books on permanent magnet (PM) ac machine drives have focused primarily on the design of the machines and have covered the control and converters for these drives only in an elementary manner. In ...
Interface Floppy Drives to TRS-80 Model 4.
motors and drives, english version, basic principles of motors
High Frequency Conducted Emission in AC Motor Drives Fed by Frequency Converters. 2018新书. Book chapter 1 Introduction to Conducted Emission in Adjustable Speed Drives.
An advanced introduction to the simulation and hardware implementation of BLDC motor drives A thorough reference on the simulation and hardware implementation of BLDC motor drives, this book covers ...
PMSM DRIVES SIMULATION
SINAMICS V70 Servo Drives[手册]pdf,
It has been eight years since my book, Con trol The ory of Elect ric Machi nery, was pu blished in Korea n. In the past six years, mor e than 2500 copies of the book have been sold in Korea....
英文文献Characterization of Electric Motor Drives for Traction Applications