Linux内核调试被很多人认为是很困难的,很多人宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令进行调试。对于复杂的Linux驱动及HAL等程序,需要使用各种方法对其进行测试。printk函数与printf函数类似,而printk函数运行在内核空间,printf函数运行在用户空间。
嵌入式调试方法:
1.模拟器。比如Qtopia Core可以用奇趣提供的Frame Buffer模拟工具qvfb,ARM硬件模拟可以用SkyEye开源项目。
2.远程调试。调试器还在PC上,调试器与被调试的程序通过网络通信。
3.通过LOG和Core Dump等文件事后分析。
stdprm 标准打印机 LPT1端口 stdaux 标准串行设备 COM1端口 stdin并不一定来自键盘,stdout和stderr也并不一定显示在屏幕上,可以将它们重定向到其他设备或磁盘文件上。 使用fprintf()时,第一参数推荐使用stderr而不要使用stdout,因为stderr的运行级要高一些,程序在异常退出时stderr可以输出,而stdout就不行。Kgdb包含了两部分,kgdb内核和一套连接接 口。虽然使用printk函数可以很方便的将消息写入日志文件或控制台。但大量使用printk函数频繁操作日志文件或控制台设备文件(/dev /console)会严重影响Linux驱动性能(因此写磁盘的速度远没有读写内存的速度快),因此,这就要求Linux驱动只在开发阶段使用 printk函数输出信息,在正式发布Linux驱动时将可能影响性能的printk函数去掉。