1.增加系统日志消息缓冲最大数量
在使用printk的时候,经常会碰到已经加了打印语句,但是终端上却并没有显示出来信息这种情况,原因是系统默认的缓冲大小有限,而打印信息又比较多,从而导致后面的打印信息覆盖了前面的信息,造成打印丢失。
解决方法是修改base中的LW_CFG_MAX_LOGMSGS这个宏,系统默认的值是20,其所在的文件路径为“libsylixos/SylixOS/config/system/system_cfg.h”,如下图所示:
2.printk输出定向到文件
本操作主要用于x86平台驱动调试,因为x86平台主板一般没有串口输出,printk的信息是输出到屏幕的,当有大量调试信息时,通过屏幕不能查看完整的调试信息,这时可以将printk的信息输出到文件中,然后查看,方法如下所示:
int log_init (void)
{
int fd;
int width;
fd_set fdset;
fd = open("/apps/log1.txt", O_RDWR | O_CREAT | O_TRUNC);
if (fd < 0) {
printf("open /apps/log1.txt fail\n");
return -1;
}
logFdGet(&width, &fdset);
FD_SET(fd, &fdset);
logFdSet(max(fd,width)+1, &fdset);
return 0;
}
只要在驱动初始化的时候调用上面函数,就可以将调试信息记录到log1.txt中。
2.printk输出输出到网络终端
a.telnet登录到系统;
b.输入files命令查看当前系统打开的文件描述符,如下图所示:
c.查看/dev/pty/xx.hst对应的fd,如上图中是12;
d.输入logfileadd 12;
e.在驱动中使用printk输出的信息就会同步输出到网络终端上;