linux设备驱动编程Segmentation fault错误分析和调试

错误原因

一个进程虚拟空间里的任何地址,在进程访问它之前必须要经过MMU转换,将它映射到物理内存的某个具体的存储位置上才是合法有效的,不然操作系统就会用“Segmetation Fault”对你的进程进行宣判,然后将其kill掉

调试方法

printk不显示在超级终端上,保存在/var/log/messages。

可以通过dmesg命令查看,如果只想显示最后几行,可以用

dmesg | tail - 8

驱动一般是软硬件联调

软件方法有:

  • 用打印调试(printk)
  • 使用 /proc 文件系统调试
  • 使用strace 命令观察调试
  • 使用kgdb 调试(软件调试方法可以参考Linux Device Driver 3rd Chapt 04

硬件调试一般是用示波器探测波形。

Reference

[1].http://blog.chinaunix.net/uid-23069658-id-3959636.html

[2].http://blog.chinaunix.net/uid-24774106-id-3427836.html

[3].http://blog.csdn.net/lphpc/article/details/574210

[4].Linux Device Driver. Page96~99

你可能感兴趣的:(linux设备驱动编程Segmentation fault错误分析和调试)