SylixOS內核打印調試方法

1.增加系統日誌消息緩衝最大數量

在使用printk的時候,經常會碰到已經加了打印語句,但是終端上卻並沒有顯示出來信息這種情況,原因是系統默認的緩衝大小有限,而打印信息又比較多,從而導致後面的打印信息覆蓋了前面的信息,造成打印丟失。

解決方法是修改base中的LW_CFG_MAX_LOGMSGS這個宏,系統默認的值是20,其所在的文件路徑爲“libsylixos/SylixOS/config/system/system_cfg.h”,如下圖所示:

http://10.9.1.16/bbs/data/attachment/forum/201805/04/154650obc2w8q55ffcbbfk.png

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命令查看當前系統打開的文件描述符,如下圖所示:

http://10.9.1.16/bbs/data/attachment/forum/201807/15/140234cwcwkt6kobzku8kp.png

c.查看/dev/pty/xx.hst對應的fd,如上圖中是12;

d.輸入logfileadd 12;

e.在驅動中使用printk輸出的信息就會同步輸出到網絡終端上;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章