IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> linux系统下用vim+ctags+cscope查看源码 -> 正文阅读

[开发工具]linux系统下用vim+ctags+cscope查看源码

好久没有使用在linux下直接使用vim进行编程了,最近开始整理内核部分的东西,顺便吧之前使用的笔记和操作贴出来,自己在熟悉下操作。

内容摘自:

https://blog.csdn.net/jklinux/article/details/72455874

ctags 用于把关键字生成一个索引表,在vim里可直接使用"ta 关键字"在索引表里查找并定位. cscope 也是生成索引表,在vim里使用"cs xx xx xx "来查找

如查看ffmpeg-3.0的源码:

? ? 1). 在终端进入源码目录,输入"ctags -R *" // 会在当前目录下生成索引表文件, 文件名为tags


? ? 2). 在终端使用,需确保终端当前工作目录是在索引表文件tags的所在目录(注意需确保/etc/vimrc里没有"set tags=xx"的语句).
? ? ? ? 如查看"av_register_all"函数, 则打开vim后,输入":ta av_register_all", 按回键后可以直接定位到函数体的所在源文件。
? ? ? ? 当查看的内容出现多个选择时,输入前面的序号即可跳转到相应的源码文件。

? ? ? ? 在vim里,按"ctrl+g"可查看当前的源文件名, "ctrl+o"可跳回上次浏览的位置.
? ? ? ? ? ? 当标移动到要查看的关键字后,按"ctrl+]"直接查看.

? ? // vim+ctags 只适合查看类型的定义,函数体等。并不适合如需查看一个函数在哪些地方被调用了,又被哪些函数调用,所以还需要用cscope命令

? ? 3). 使用cscope命令生成索引表
? ? ? ? 终端命令: ?
? ? ? ? ? ?find ./ -name "*.h" -o -name "*.c" ? > ?cscope.files ? //在当前目录下查找*.h, *.c文件,并把相应的文件及路径输出到cscope.file文件里
? ? ? ? ? ?cscope -bkq ? // 让cscope根据 cscope.file文件里的文件列表生成索引表(cscope.in.out ?cscope.out ? ? cscope.po.out
)


? ? 4). cscope在vim里的用法
? ? ? ? 打开vim后, 输入":cs"确认后会弹出帮助说明:
? ? ? ? cscope commands:
? ? ? ? add ?: Add a new database ? ? ? ? ? ? (Usage: add file|dir [pre-path] [flags])
? ? ? ? find : Query for a pattern ? ? ? ? ? ?(Usage: find c|d|e|f|g|i|s|t name)
? ? ? ? ? ? ? ?c: Find functions calling this function
? ? ? ? ? ? ? ?d: Find functions called by this function
? ? ? ? ? ? ? ?e: Find this egrep pattern
? ? ? ? ? ? ? ?f: Find this file
? ? ? ? ? ? ? ?g: Find this definition
? ? ? ? ? ? ? ?i: Find files #including this file
? ? ? ? ? ? ? ?s: Find this C symbol
? ? ? ? ? ? ? ?t: Find this text string
? ? ? ? help : Show this message ? ? ? ? ? ? ?(Usage: help)
? ? ? ? kill : Kill a connection ? ? ? ? ? ? ?(Usage: kill #)
? ? ? ? reset: Reinit all connections ? ? ? ? (Usage: reset)
? ? ? ? show : Show connections ? ? ? ? ? ? ? (Usage: show)
? ? ? ? Press ENTER or type command to continue

? ? 常用cs命令:
? ? ? ?"cs add ?./"是用于增加当前目录下的索引表

? ? ? ?"cs ?find ?c 函数名" 查看哪些函数调用指定的函数名

? ? ? ?"cs ?find ?d 函数名" 查看指定的函数名调用了哪些函数

? ? ? ?"cs find g 类型/函数" 查看类型的定义或函数体

? ? ? ?"cs find t 字符串" ? 按字符串内容来查找相应的关键字

//
在一些源码工程里,如uboot, linux kernel里:
? ? 直接执行下面命令即可产生相应的索引表:
? ? ? ? ? ?make tags
? ? ? ? ? ?make cscope

查看linux内核源码还可以通过”man 9 内核里的函数”来查看说明.
需要在linux内核源码目录下:

make mandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make installmandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

增加vim补全功能, 如内核路径在/disk3/h3_kernel目录下:
vim /etc/vimrc //修改vim配置文件, 在文件尾增加以下内容

set path+=/disk3/h3_kernel/include/ set path+=/disk3/h3_kernel/arch/arm/include/ set path+=/disk3/h3_kernel/arch/arm/mach-sunxi/include/

保存退出后,在vim写代码时,只要写出前几个字母后按”ctrl + p”即可显示出补全内容

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:31:55  更:2021-08-08 11:34:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 5:22:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码