vim利器—>cscope

Linux内核的CSCOPE配置 基于上一篇博客vim基础配置,在完成vim的基础及一些插件配置后,我们期望的是能够用vim像IDE一样便利地阅读代码,例如查看变量/函数的定义,查找引用等等,本篇博客介绍如何通过vim+cscope实现Linux内核代码的便利阅码如果有哪里理解错的地方欢迎大家留言交流,如需转载请标明出处。如果你没看懂一定是我讲的不好,欢迎留言,我继续努力。以上。 阅读详情

最近在大神的指引下,我从网上学会了一个很好用的工具cscope,在这里我们来说说vim的使用利器——》cscope插件,这个插件可以在我们使用vim看项目或者编译的时候便利很多,如我们在看项目的时候想看看某个函数在哪里定义的或者在哪里被调用过以及某函数都调用了那些函数等,这些功能cscope都可以实现。下面我们来看看怎么去安装cscope和使用cscope吧:
1、安装cscope:
1)如果系统是ubuntu:
sudo apt-get install cscope(配置好网络源)
2)redhat:
去Cscope的主页在http://cscope.sourceforge.net/下载cscope安装包。解压后进行安装:
安装命令:

            #:./configuer
            #:make
            #:make install

安装好cscope后就可以开始使用了。
2、使用:
在使用cscope之前我们需要为它准备好它需要使用的库,在我们需要使用cscope的目录使用命令:cscope -Rbq生成cscope需要使用的库,执行完该命令后在当前目录下会生成cscope.out cscope.in.out cscope.po.out三个文件,其中cscope.out是基本的符号索引,后两个文件是使用”-q”选项生成的,可以加快cscope的索引速度。

在缺省情况下,cscope在生成数据库后就会进入它自己的查询界面,我们一般不用这个界面,所以使用了”-b”选项。如果你已经进入了这个界面,按CTRL-D退出。

Cscope在生成数据库中,在你的项目目录中未找到的头文件,会自动到/usr/include目录中查找。如果你想阻止它这样做,使用”-k”选项。

Cscope缺省只解析C文件(.c和.h)、lex文件(.l)和yacc文件(.y)。如果你想使用cscope解析C++或Java后缀的文件,那么你需要把这些文件的名字和路径保存在一个名为cscope.files的文件。当cscope发现在当前目录中存在cscope.files时,就会为cscope.files中列出的所有文件生成索引数据库。首先进入到你程序所在目录,执行下面命令:

   find . –type f > cscope.files
   cscope -bq 

这里写图片描述
我们再来看看这个新生成的文件内容,
这里写图片描述
文件里将当前目录下的所有文件名以相对路劲的形式加如在该文件中了,这样cscope工具在检索的时候会通过该文件去检测文件中包含的所有文件了。上面的cscope命令并没有使用”-R”参数递归查找子目录,因为在cscope.files中已经包含了子目录中的文件。

注意:find命令输出的文件以相对路径表示,所以cscope.out的索引也相对于当前路径。如果你要在其它路径中使用当前的cscope.out,需要使用下面介绍的-P选项。
Cscope只在第一次解析时扫描全部文件,以后再调用cscope,它只扫描那些改动过的文件,这大大提高了cscope生成索引的速度。

下表中列出了cscope的常用选项:

-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用”-“,表示由标准输入获得文件列表。
-Idir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。
要在vim中使用cscope的功能,需要在编译vim时选择”+cscope”。vim的cscope接口先会调用cscope的命令行接口,然后分析其输出结果找到匹配处显示给用户。

在vim中使用cscope非常简单,首先调用”cscope add”命令添加一个cscope数据库,然后就可以调用”cscope find”命令进行查找了。vim支持8种cscope的查询功能,如下:

0或者s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
1或者g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
2或者d: 查找本函数调用的函数
* 3或者c:* 查找调用本函数的函数
4或者t: 查找指定的字符串
6或者e: 查找egrep模式,相当于egrep功能,但查找速度快多了
7或者f: 查找并打开文件,类似vim的find功能
8或者i : 查找#include这个文件的文件(们)
例如:(#为注释)

                 :cscope find c ftpd_send_resp                     # 查找所有调用这个函数的函数(们)

                 :cscope find 3 ftpd_send_resp                     # 和上面结果一样



                 :cscope find 0 FTPD_CHECK_LOGIN       # 查找FTPD_CHECK_LOGIN这个符号

我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能,但它是在交叉索引数据库中查找,速度要快得多。
help :显示一个简短的摘要。

          使用方法:

          :cs help



   kill  :杀掉一个cscope链接(或者杀掉所有的cscope链接)

          使用方法:

          :cs kill {num|partial_name}

          为了杀掉一个cscope链接,那么链接数字或者一个部分名称必须被指定。部分名

称可以简单的是cscope数据库文件路径的一部分。要特别小心使用部分路径杀死一个cscope链接。

          假如指定的链接数字为-1,那么所有的cscope链接都会被杀掉。



   reset:重新初始化所有的cscope链接。

          使用方法:

          :cs reset



   show:显示cscope的链接

          使用方法:

          :cs show



   假如你在使用cscope的同时也使用ctags,|:cstag|可以允许你在跳转之前指定从一个或另一个中查找。例如,你可以选择首先从cscope数据库中查找,然后再查找你的tags文件(由ctags生成)。上述执行的顺序取决于|csto|的值。

   |:cstag|当从cscope数据库中查找标识符时等同于“:cs find g”。

   |:cstag|当从你的tags文件中查找标识符时等同于“|:tjump|”。

vim提供了一些选项可以调整它的cscope功能:

cscopecscopeprg选项用于设置cscope程序的位置。
cscopecscopequickfix设定是否使用quickfix窗口来显示cscope的结果,详情请”:help cscopequickfix”;
如果你想vim同时搜索tag文件以及cscope数据库,设置cscopecscopetag选项;
cscopecscopetagorder选项决定是先查找tag文件还是先查找cscope数据库。设置为0则先查找cscope数据库,设置为1先查找tag文件。我通常设置为1,因为在tag文件中查找到的结果,会把最佳匹配列在第一位。
vim的手册中给出了使用cscope的建议方法,使用命令”:help cscope-suggestions”查看。

以下是cscope配置文件内容,将这些家入到vimrc中,配合vim使用,摘自网上:

if has(“cscope”)

          set csprg=/usr/local/bin/cscope

          set csto=0

          set cst

          set nocsverb

          " add any database in current directory

          if filereadable("cscope.out")

              cs add cscope.out

          " else add database pointed to by environment

          elseif $CSCOPE_DB != ""

              cs add $CSCOPE_DB

          endif

          set csverb

   endif
   nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>

nmap

使用vim+cscope阅读内核源码详解 方法一:命令方法二:光标停在单词submit_bio上,按ctrl+\ g,在当前窗口跳转到函数定义方法三:光标停在单词submit_bio上,按,上下分割窗口并跳转到函数定义方法四:光标停在单词submit_bio上,按,左右分割窗口并跳转到函数定义内核的syscall定义是这样的要想找到它,就要使用正则表达式匹配命令就可以找到它这些工具和技巧算得上老手艺了,我是个怀旧的人,总是对这些老技术有莫名的喜欢。 阅读详情

相关推荐

vim+ctags+cscope+Taglist+NERDTree打造成SourceInsight

Vim神器,将Vim改造为强大的IDE

houxiaoni01的博客 3601

Cscope使用方法小结

1.cscope的配置 vim 配置文件 vimrc. 你可以修改/etc/vimrc使用所有用户都使用本配置文件,当然你还可以修改~/.vimrc 下载配置文件:cscope_map.vim 把cscope_map.vim里从 if has("cscope") 到 endif里边的内容复制到/etc/vimrc里边去,如果找不到cscope_map.vim自己写进去,网上找下大概配置 先在~/vimrc中增加一句: :set cscopequickfix=s-,c-,d-,i-,t-,e- 这个是设定是否

hunter168_wang的专栏 6264

深入解析ACS SPiiPlus运动控制器的托管API架构与实战应用

本文深入解析了ACS SPiiPlus运动控制器的托管API架构,详细介绍了其核心模块、设计哲学与实战应用。通过C#/.NET封装的托管接口,开发者能够高效实现多轴协同运动控制、EtherCAT总线集成以及事件驱动的异步编程,显著提升高精度工业自动化设备的开发效率与系统稳定性。

jwt8token的博客 861

内核源码查看:Vim+Cscope安装与配置

Vim+Cscope安装与配置

1901

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 328

注意力机制详解

注意力机制详解Attention机制由来Attention定义Encoder-Decoder框架存在问题:Attenion机制的引入Attention机制的类别Hard AttentionSoft AttentionGlobal AttentionLocal AttentionSelf AttentionMulti-head Attention附录—Transformer全局视角Tensor视角Encoder部分Self-AttentionSelf-Attention向量计算Self-Attention的矩

weixin_43236310的博客 1万+

使用Vim开发软件-程序员的利器CScope

<br />本节所用命令的帮助入口:<br />:help cscope<br />在前面的文章中介绍了利用ctags生成的tag文件,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用更为 强大的cscope。<br />Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分。直到2000年4月,这个工具才由SCO公司以BSD license开源发行。<br />

一直问自己怎样才能把程序写的更好? 编程境界:干净利落,没有任何多余步骤。 动态能力:反应,逻辑思维 428

N32G003学习——第九章 第三节1 串口 发送

经过第九章前2节的学习,基础打下之后,开始敲代码。

qq_34525008的博客 1034

Vim中关于 cscope 的帮助

*if_cscop.txt* For Vim version 7.3. 最近更新: 2011年5月 VIM REFERENCE MANUAL by Andy Kahn 译者: lang2,tocer http://vimcdoc.sf.net

longerzone的专栏 8357

5.4 磁悬浮轴承控制系统仿真:在MATLAB/Simulink中搭建包含功放、传感器模型的闭环系统模型,进行稳定性与动态性能仿真

磁悬浮轴承控制系统仿真方法 摘要:磁悬浮轴承控制系统仿真需建立包含转子动力学、传感器、控制器、功率放大器和电磁执行器的高保真非线性模型。通过MATLAB/Simulink搭建闭环系统,重点建模传感器带宽限制与噪声、功放饱和特性以及电磁力非线性。仿真分析包括时域阶跃响应、扰动抑制测试,频域稳定性分析(伯德图、奈奎斯特图),以及参数摄动下的鲁棒性验证。关键要验证控制算法在非线性因素影响下的稳定性和动态性能,为实际系统实现提供可靠依据。仿真中需特别注意物理量单位一致性和数字控制离散化效应。

技术工作者 1108

自动驾驶仿真 (三)—— 基于PreScan与Simulink的AEB系统仿真

自动驾驶仿真三—— 基于PreScan&Simulink的AEB系统仿真1. AEB自动紧急制动系统1. 1 TTC碰撞时间模型1. 2 C-NCAP法规部分术语与定义1. 3 主动安全ADAS系统试验项目2. AEB仿真分析建模2.1 搭建场景2.2 传感器建模2.3 添加AEB控制系统3. 典型工况仿真3.1 CCRs仿真测试3.1 CCRm仿真测试4. 参考学习的书目教材 博主前面的博文已经介绍了Prescan&Simulink基本的场景建模及仿真分析流程,《自动驾驶仿真 (二)——

zhudj08的博客 1万+

Cscope的使用

Cscope的使用

exlink2012的专栏 2338

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 188

VIM下的cscope使用方法(图文并茂&简易上手)

一、cscope安装 sudo apt-get install cscope 二、创建cscope数据库 在需要建立cscope索引的源码目录下,运行下面这个命令即可生成cscope索引。 cscope -Rbq 而后在当前目录下会产生三个文件,cscope.out、cscope.in.out和cscope.po.out 创建数据库的各个参数含义如下: -R:递归解析所有的子目录。 -b:仅...

悟已往之不谏 知来者之可追 4987

零基础学习simulink-- 基于自适应模糊PID控制的直流电机速度控制系统

通过上述代码实现,您可以逐步创建和搭建一个基于自适应模糊PID控制的直流电机速度控制系统。该系统能够根据电机的状态和误差实时调整PID参数,确保电机速度稳定在设定范围内。自适应模糊PID控制具有较强的鲁棒性和适应性,能够在存在不确定性和扰动的情况下提供快速且精确的控制性能。Simulink提供了强大的建模和仿真工具,使得控制系统工程师能够快速构建复杂的控制算法,并将其应用于实际工程中。直流电机建模:建立直流电机的动态模型,包括电枢电压、电流、转速和负载扭矩。自适应模糊PID控制器设计。

amy_mhd的博客 413

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Cscope的使用(领略Vim + Cscope的强大魅力)

http://blog.youkuaiyun.com/dengxiayehu/article/details/6330200 1、Cscope介绍          Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事。在Vim中,通过cscope的查询,跳转到指定的地方就像跳转到任何标签;她能够保存标签栈,所以通过合适的键盘映射绑定,你能够在函数

1859

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

cscope使用简介

IDE

my博客 1976

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vim中使用cscope的方法

一、安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装。 sudo apt-get install cscope 二、插件安装 这里选择的是Vundle来管理vim插件,所以只需要在.vimrc中添加Plugin ‘brookhong/cscope.vim’,然后执行:PluginInstall就搞定了。 三、生成标记库 cscope在执行过程中实际上是通过扫描标记库来首先找到标记以及标记的位置,从而实现跳转的,因此首先需要为个人的代码项目生成一个完整的标记库

习惯就好zz的专栏 2348

vim+cscope阅读源码

做嵌入式开发时,可以使用vim+cscope打造一个舒适的源码阅读环境。1.添加自定义的vim配置文件使vim更易用。2.cscope是查看代码的利器。可以定位函数、变量定义及被引用的代码位置。

lzhf1122的博客 1268

Linux之实战命令75:cscope应用实例(一百零九)

本篇目的:Linux之实战命令75:cscope应用实例cscope是一个在 Linux 系统中用于交互式浏览 C 程序代码的命令行工具。它为程序员提供了一种高效的方式来搜索和查看 C 代码中的函数、变量、宏、类型等信息。cscope是一个强大的代码分析工具,特别适用于大型项目的开发和维护,能够帮助开发人员快速导航和理解代码结构,尤其是在面对复杂的代码库时。应用场景:当需要了解某个函数或变量的定义位置时,可以使用此功能,帮助开发人员快速定位代码。

Android系统攻城狮 2144

Emacs+cscope手动创建索引(感受cscope的强大)(八十三)

cscope 创建索引.创建索引文件列表cscope.files注意:cscope在产生索引文件时,只搜索类型为C, lex和yacc的文件(后缀名为.c, .h, .l,.y),C++的文件根本没有生成索引。所以需要find手动指定。查看下cscope.files文件列表.为cscope.files中的每个文件都生成索引函数此命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。

Android系统攻城狮 560

使用vim + ctags + cscope在Linux中阅读代码

为了方便在Linux下,快速阅读修改代码,可以使用vim+ctags+cscope的方式。

qq_43570266的博客 1598

Cscope的使用(实现vim函数跳转)(领略Vim + Cscope的强大魅力)

Cscope的使用(领略Vim + Cscope的强大魅力) 1、Cscope介绍 Cscope是类似于ctags一样的工具,但可以认为她是ctags的增强版,因为她比ctags能够做更多的事。在Vim中,通过cscope的查询,跳转到指定的地方就像跳转到任何标签;她能够保存标签栈,所以通过合适的键盘映射绑定,你能够在函数向后或向前跳转,就像通常使用的tags一样。 首次使用Cscope时,他会根据源文件生成符号数据库。然后在以后的使用中,cscope只是在源文件有改

我是guyue,guyue就是我O(∩_∩)O 1万+

⚡ Vim 集成 Cscope 基本配置和用法

⚡ Vim 集成 Cscope 基本配置和用法

aitav0的博客 1468

VIM使用——通过cscope打造编译器

VIM 的cscope操作

baidu_35260565的博客 796
上一篇: 自动补全插件ctags
下一篇: 宏定义中的 #、##和__VA_ARGS__
magiclyj
博客等级 码龄10年 41粉丝 76原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值