我是靠谱客的博主 大力水蜜桃,最近开发中收集的这篇文章主要介绍dynamic debug动态打印------调试kernel用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

内核打印调试也是常用的内核调试手段,但是由于全部打开打印,会导致打印太多,很麻烦。这个时候dynamic debug上场了

可以参考内核代码Documentation/admin-guide/dynamic-debug-howto.rst

  // 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+.
  nullarbor:~ # echo -n 'format "nfsd: READ" +p' >
                                <debugfs>/dynamic_debug/control

  // enable messages in files of which the paths include string "usb"
  nullarbor:~ # echo -n '*usb* +p' > <debugfs>/dynamic_debug/control

  // enable all messages
  nullarbor:~ # echo -n '+p' > <debugfs>/dynamic_debug/control

  // add module, function to all enabled messages
  nullarbor:~ # echo -n '+mf' > <debugfs>/dynamic_debug/control

  // boot-args example, with newlines and comments for readability
  Kernel command line: ...
    // see whats going on in dyndbg=value processing
    dynamic_debug.verbose=1
    // enable pr_debugs in 2 builtins, #cmt is stripped
    dyndbg="module params +p #cmt ; module sys +p"
    // enable pr_debugs in 2 functions in a module loaded later
    pc87360.dyndbg="func pc87360_init_device +p; func pc87360_find +p"
               

我用的4.19内核 内核配置选项参数如下                                                                                                                                                                                                         

编译kernel的时候使能DYNAMIC_DEBUG,让dynamic debug编译进去。(menuconfig)

 

   或者直接修改

   ./config 文件
   CONFIG_DYNAMIC_DEBUG=y

   注意的是其依赖于: Depends on: PRINTK [=y] && DEBUG_FS [=y]      

动态打印的内核配置选项 CONFIG_DYNAMIC_DEBUG=y

依赖内核其他配置选项Depends on: PRINTK [=y] && DEBUG_FS [=y]      

 

最后

以上就是大力水蜜桃为你收集整理的dynamic debug动态打印------调试kernel用法的全部内容,希望文章能够帮你解决dynamic debug动态打印------调试kernel用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部