第十章、嵌入式Linux的调试技术

         Prink打印内核调试信息。Prink函数运行在内核空间,printf函数运行在用户空。Prink函数在prink.c文件中实现。Prink函数的原型:asmlinkge int prink(const char *fmt,…。

Prink文件是一个简单的由4个数字组成的文本文件,6:将消息输出到控制台的级别。4:默认的消息日志级别。1:控制台日志级别可被设置的最小值。7:控制台日志级别的默认值。Linux驱动只在开发阶段使用Prink函数输出信息,在正式发布Linux驱动是将可能影响性能的prink函数去掉。

可变参数的宏:与固定参数宏的不同之处就是可变参数宏需要通过_VA_ARGS_宏来获取可变参数宏的可变参数。Do{…}while(0):将多条语句作为一个整体处理。

通过虚拟文件系统(/proc)进行数据交互。/proc是虚拟文件系统,即内存映射,并且读写/proc文件系统的速度要远比读写/dev文件系统的速度快。

Proc_mkdir.creat_proc_entry,creat_proc_read_enty,remove_proc_entry

creat_proc_read_enty函数在内部通过调用creat_proc_entry函数实现的。Linux文件的读写又属性决定。删除虚拟目录之前,要先删除虚拟目录中的虚拟文件。

用gdb调试用户空间程序。Gdb可以跟踪调试用户空间的程序。Gdbserver远程调试用户空间程序。用kgdb远程调试内核程序。

原文地址:https://www.cnblogs.com/sxauzzj/p/5614338.html