嵌入式Linux熱門培訓內容之Linux動態打印kernel日志

時間:2018-12-13 17:36:23

下面講正題,我們在開發的時候,需要把一些日志設置默認關閉,在需要打印時才讓他打印,這時候就需要用到動態打印功能,這個功能還是比較酷的。

參考文件:

dynamic-debug-howto.txt

1、內核配置

CONFIG_DEBUG_FS=y

CONFIG_DYNAMIC_DEBUG=y

把這兩個宏打開

打開這個宏后就會編譯

./lib/dynamic_debug.c  

動態打印的所有功能都是在這個.c文件里面實現的

2、代碼修改

--- a/kernel/drivers/gosodrv/touchscreen/ft5x06_ts.c

+++ b/kernel/drivers/gosodrv/touchscreen/ft5x06_ts.c

@@ -402,6 +402,7 @@ static void ft5x0x_ts_pen_irq_work(struct work_struct *work)

        struct ft5x06_ts_data *data = container_of(work, struct ft5x06_ts_data,

                                          pen_event_work);

        //printk("ft5x0x_ts_pen_irq_work\n");

+       pr_debug("%s: dev_dbg test owen.wei ==============\n", __func__);

        ret = ft5x06_handle_touchdata(data);

        if (ret)

        pr_err("%s: handling touchdata failed\n", __func__);

 3、   打開Log打印

adb shell "echo -n "file ft5x06_ts.c +p" > /sys/kernel/debug/dynamic_debug/contr

4、   示例

Examples ========

// enable the message at line 1603 of file svcsock.c

nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' > <debugfs>/dynamic_debug/control

打開某個文件某一行的日志

// enable all the messages in file svcsock.c  打開某個文件的所有日志

nullarbor:~ # echo -n 'file svcsock.c +p' > <debugfs>/dynamic_debug/control

// enable all the messages in the NFS server module 打開某個模塊的所有日志

nullarbor:~ # echo -n 'module nfsd +p' > <debugfs>/dynamic_debug/control

// enable all 12 messages in the function svc_process() 打開某個函數的所有日志

nullarbor:~ # echo -n 'func svc_process +p' > <debugfs>/dynamic_debug/control

// disable all 12 messages in the function svc_process() 關閉某個文件的所有日志

nullarbor:~ # echo -n 'func svc_process -p' > <debugfs>/dynamic_debug/control

// enable messages for NFS calls READ, READLINK, READDIR and READDIR+. 

? 江苏快3号码表