生成特定架构内核cscope数据库

article/2025/10/13 20:45:12

tags代码浏览工具

tags工具介绍

一般来说,如果我们想要研究一个c/c++项目的源码,我们首先要做的是为该项目生成tags文件,tags文件种类有很多,比如 ctags、etags、cscope、gtags 等,有关他们的区别可以参考下面链接里的内容:

https://github.com/oracle/opengrok/wiki/Comparison-with-Similar-Tools

ctags使用

ctags官网

提供下载,安装、手册、FAQ等信息

http://ctags.sourceforge.net/

ctags功能

ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来。

ctags常用命令

ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来。
img

cscope使用

cscope官网

提供下载,安装、手册、FAQ等信息

http://cscope.sourceforge.net/

cscope功能

cscope是用来浏览源码的工具,可生成符号数据库,以方便快速的搜索和索引。相对ctags提供了更多功能,查找符号调用位置,正则表达式搜索等。

cscope常用命令

cscope -Rbk:迭代遍历子目录生成数据库,但不打开GUI。

gtags使用

gtags官网

http://www.gnu.org/software/global/

gtags功能

它与ctags或etags相似,为源码生成符号索引,并且提供了更多强大的功能,如符号调用位置,正则表达式搜索,符号补全搜索等。

gtas使用

GTAGS    definition database
GRTAGS   reference database
GPATH    path name database$ global //生成符号$ global symbal //搜索符号文件路径$ global -c prefix  //补全符号

生成kernel标签

Linux内核不仅包含了x86架构的函数还包含了如:arm、powerPC等等其他架构的函数,如果直接生成tags文件,将来查找时,多种架构的同名函数会混淆在一起,很不方便。贴心的Linux内核组给准备了tags.sh文件,可以自动生成相应的tags(ctags用),和cscope.out(cscope用)。linux的Makefile里已经帮我们写好了如何生成各种tags,

$ make help# 省略其他tags/TAGS    - Generate tags file for editorscscope    - Generate cscope indexgtags           - Generate GNU GLOBAL index

由上可以看到,我们只要执行对应的make命令,就可以生成各种tags文件了,make调用Makefile,然后把参数传递给**/script/tags.sh,**tags.sh会接收更多的参数ARCH, SUBARCH, SRCARCH, srctree, src。

  1. ARCH: which architecture to index. You can see all architectures list just by doing ls -l arch/ in your kernel source tree.
  2. SUBARCH: the meaning of this variable depends on your architecture:
    • if ARCH=arm, SUBARCH will be used to determine arch/arm/mach-* and arch/arm/plat-* directories, and these directories will be indexed
    • if ARCH=um, use SUBARCH to specify which architecture you actually want to use in your User-Mode Linux (like SUBARCH=arm or SUBARCH=x86)
    • for the rest of architectures, you can omit this variable
  3. ALLSOURCE_ARCHS: use this to index more than one architecture. Like ALLSOURCE_ARCHS="x86 mips arm" or ALLSOURCE_ARCHS="all". If you only want to index one architecture, omit this variable and use ARCH instead.
  4. COMPILED_SOURCE: set this variable to 1 if you want to index only actually compiled source files. If you want to index all source files, omit setting this variable.
  5. O= (this is actually Makefile parameter): use absolute paths (useful if you want to load created cscope/ctags index files outside of kernel directory, e.g. for development of out-of-tree kernel modules). If you want to use relative paths (i.e. you’re gonna do development only in kernel dir), just omit that parameter.

例如:

内核生成特定架构cscope数据库
make cscope ARCH=x86
make cscope ALLSOURCE_ARCHS=“x86 arm” 生成多种架构


http://chatgpt.dhexx.cn/article/KEx9l4yE.shtml

相关文章

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

1.cscope 创建索引 <1>.创建索引文件列表cscope.files # find . ! -path "./out/*" ! -path "./prebuilts/*" ! -path "./frameworks/*" -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.cp…

vim cscope java_【转】Cscope的使用(领略Vim + Cscope的强大魅力)

【转】Cscope的使用(领略Vim Cscope的强大魅力) 1、Cscope介绍 Cscope是类似于ctags一样的工具&#xff0c;但可以认为她是ctags的增强版&#xff0c;因为她比ctags能够做更多的事。在Vim中&#xff0c;通过cscope的查 询&#xff0c;跳转到指定的地方就像跳转到任何标签&…

Vim/Cscope使用

&#xff1a;cs find s ---- 查找C语言符号&#xff0c;即查找函数名、宏、枚举值等出现的地方 &#xff1a;cs find g ---- 查找函数、宏、枚举等定义的位置&#xff0c;类似ctags所提供的功能 &#xff1a;cs find d ---- 查找本函数调用的函数 &#xff1a;cs find c ---- 查…

Cscope的使用

首先在目录下建立cscope索引文件 find -name *.c > cscope.file cscope -Rbkq 这个命令会生成三个文件&#xff1a;cscope.out, cscope.in.out, cscope.po.out。 其中cscope.out是基本的符号索引&#xff0c;后两个文件是使用"-q"选项生成的&#xff0c;可以加快c…

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

http://blog.csdn.net/dengxiayehu/article/details/6330200 1、Cscope介绍 Cscope是类似于ctags一样的工具&#xff0c;但可以认为她是ctags的增强版&#xff0c;因为她比ctags能够做更多的事。在Vim中&#xff0c;通过cscope的查询&#xff0c;跳转到指定的地方就像跳转到任…

计算机联网记录能删除吗,电脑怎么删除路由器wifi记录

这个网络时代里面我们最常用来连接网络的设备就是路由器了&#xff0c;特别是在我们的生活中很难缺少wifi网络&#xff0c;当然我们有时候也可能会想要删除wifi网络&#xff0c;那么你知道电脑怎么删除路由器wifi记录吗?下面是学习啦小编整理的一些关于电脑删除路由器wifi记录…

mysql查询删除的数据历史记录_查询数据库各种历史记录

在SQL Server数据库中,从登陆开始,然后做了什么操作,以及数据库里发生了什么,大多都是有记录可循的,但是也有一些确实无从查起。 一.数据库启动记录 1.最近一次启动SQL Server的时间 select sqlserver_start_time from sys.dm_os_sys_info; --也可参考系统进程创建的时间,…

怎样删除计算机硬盘记录,有什么方法能删除电脑里使用过的移动硬盘的记录

第一步&#xff1a;通过硬件检测软件(EVEREST Ultimate)得到你的移动存储器的硬件编号&#xff0c;例如我的魅族E5为&#xff1a;Ven_SigmaTel&Prod_MSCN&Rev_0100\0002F68C022B070F&0。0002F68C022B070F&0为硬件编号&#xff0c;具有唯一性。 3 T* }5 {/ T3 ]…

sqlserver恢复已经删除的表记录

在发生删除操作后&#xff0c;发现要找回删除的记录&#xff0c;此时灾难发生&#xff0c;为了挽回记录&#xff0c;操作步骤如下&#xff1a; 首先保证数据恢复模式是完整的&#xff0c;然后才能做下面的操作&#xff1a; 强烈建议数据库创建之后做个完整的备份&#xff0c;…

数据库的主键ID设置为自动增加,删除记录后的记录还是递增的,如何重新从1开始增加呢?

操作 数据库数据 删除了7和8之后添加了一条新数据 问题 删除记录后的记录还是递增的&#xff0c;如何重新从1开始增加呢&#xff1f; 解决 truncate table 表名;注意 此语句会把表中数据清空

如何查看AD域账号的删除记录

**如何查看AD域账号删除记录及恢复**在日常AD域管理中&#xff0c;有时候我们不小心删除了域账号&#xff0c;或者我们想查看这个域账号是什么时候创建并删除的&#xff0c;那怎么办&#xff1f;是否可以恢复&#xff1f;其实微软本身已经为我们的账号信息做了备份机制&#xf…

计算机上网记录怎么清除,电脑浏览器上网记录怎么删除

我们使用浏览器上网时都会生成大量的缓存临时文件与访问过的url地址&#xff0c;有时为了我并不想让其它人看到我这些信息要怎么清除呢&#xff0c;下面我们一起来看看吧。 1.在这里我们只要打开浏览器&#xff0c;然后点击菜单上的“查看”->“历史记录”如下图所示(搜狗浏…

es 7.4.0 详解删除记录的方法

_delete_by_query 命令是删除记录 post 请求&#xff1a;http://localhost:9200/index/_delete_by_query 注&#xff1a; 删除也是先走和查询一样的语法&#xff0c;只是最后的命令是 删除的命令 {"query":{"term":{"bookId":1}} }这是清空 {&…

【日常实用】Git如何删除记录中某一笔提交

前言&#xff1a;好久没写了&#xff0c;最近忙于工作的项目&#xff0c;一连干了好几个月&#xff0c;几个月里面又遇到了高温、限电以及疫情种种困难&#xff0c;最终还是如期完成项目进度。今年真的是太难了&#xff0c;哈哈废话不多说&#xff0c;今天给大家介绍一下Git中的…

MySQL删除表中所有记录的方法和操作例子

从数据库中删除数据&#xff0c;使用DELETE语句。其语法如下 DELETE FROM table_name [WHERE <condition>]; 语句解析&#xff1a;table_name为表名称&#xff0c;[WHERE <condition>]为删除条件 例如如下例子&#xff1a;删除的是表admin_user_table&#xff…

DDMS开不起来怎么办

接上一篇博客&#xff0c;解决了虚拟机打不开的问题&#xff0c;出现了DDMS打不开的问题。原因是我把文件进行替换了&#xff0c;少了monitor.bat&#xff0c;导致DDMS打不开。 解决方法&#xff1a; 1.去http://www.android-studio.org/index.php/download/hisversion中下载新…

DDMS 无法显示进程解决方案

最近使用真机替换模拟器&#xff0c;发现ddms无法显示进程名称&#xff0c;LogCat的application显示&#xff1f;。如图所示&#xff1a; 后面经过师兄指导&#xff0c;按照以下步骤解决了&#xff1a; 第一步&#xff1a;拷贝mprop 到/data/目录下&#xff1b; 第二步&#x…

安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 车来了 app 的广告 )

From&#xff1a;https://www.e-learn.cn/topic/3527658 Android SDK 中的 ddms 使用详解&#xff1a;https://blog.csdn.net/x83853684/article/details/80643131 ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全&#xff1a;ht…

android studio ddms使用,Eclipse和Android Studio中的DDMS使用时什么不同?

相信很多经常开发Android应用的朋友应该都接触到DDMS&#xff0c;里面很有多强大的功能&#xff0c;感觉很多人都不是太了解&#xff0c;现在我就来给大家介绍下。 软件名称&#xff1a;adb工具包完整版(包括4文件附详细安装方法)软件大小&#xff1a;269KB更新时间&#xff1a…

androidstudio 无法启动ddms

想使用ddms 查看线程数等&#xff0c;但是点击开启&#xff0c;总是会报错&#xff0c;重启也不能恢复&#xff0c;整了好久&#xff0c;后来发现不管什么方法&#xff0c;都得多试试&#xff0c;能解决问题就是好的&#xff1b; 在androidstudio中如何启动ddms 找到如下&…