Linux内核代码阅读小技巧:提升搜索速度100倍
对于初学者来说阅读内核代码的时候,由于代码量比较大,用普通的grep命令搜索所有源代码文件比较耗时,在服务器上搜索一遍所有的内核代码可能需要10多秒甚至更多时间(取决于电脑的配置)。
对于某一个build,其实只用到了小部分的驱动代码,这里的一个小技巧是可以构建一个命令行之搜索编译用到的源代码。
用下面的命令生成elf文件vmlinux所用到的源代码文件:
readelf --string-dump=.debug_str vmlinux | sed -n '/\/\|\.c/{s/.*\] //p}' > cscope.files
然后就可以只在这些文件中搜索了:
cat cscope.files \| xargs grep<pattern>
因为本人喜欢用vim,用这个命令可以将搜索结果直接放到一个叫做cfile的目录列表来上下浏览:
:AsyncRun! cat cscope.files \| xargs ag --vimgrep <cword>
这样来搜索关键词几乎是100毫秒左右就可以结束,比起10多秒的搜索速度是不是提升了100倍?当然最重要的是,搜索剔除了没有用到的源文件,使得读代码更加容易了。
效果如下: