当前位置:首页 > 技术文章 > 正文内容

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倍?当然最重要的是,搜索剔除了没有用到的源文件,使得读代码更加容易了。

效果如下:

相关文章

Linux快速上手 - Linux启动过程、系统目录、远程登录详解

一、Linux启动过程Linux系统的启动过程可以分为如下三个阶段。1.1 内核的引导首先是BIOS(Basic Input/Output System)开机自检,按照BIOS中设置的启动设备,通常是...

linux系统远程文件传输小技巧(linux远程传送文件的命令)

今天,盯着办公室的linux系统,忽然想到前两天有办公室同事要传文件,于是做了一下操作,针对linux系统,只需要一条命令操作就可以将我们的文件传到另一台同事的电脑上去。针对linux系统之间,比较...

Linux基础知识之查看io(查看linux的io使用情况)

1.查看占用IO高的磁盘:iostat -X -d -k 1 102.查看占IO的pid:pidstat -d3.查看pid进程:ps -aux | grep pid4.查看占用IO高的pid:iot...

【入门】linux服务器查看mysql相关的信息

查看mysql版本mysql --version查看mysql的运行状态systemctl status mysqld查看mysql安装目录which mysql # 输出示例:/usr/bin/my...

Linux 的这几种搜索方式,你都会了吗?

1.find 命令find 命令是用来在给定的目录下查找符合给定条件的文件语法格式:find [查找起始路径] [查找条件] [处理动作](1)根据名称查找:find [查找起始路径] -name 文...

FTP客户端库ftplibpp在linux系统上的使用

一、简述ftplibpp是一个跨平台的可以提供ftp客户端功能的C++库。它包含可以实现ftp客户端功能的类,支持所有基本的ftp功能以及一些高级功能:如恢复、fxp、ssl/tls加密、支持大文件或...