Emacs之内核源码跳转工具counsel-gtags(七十九)

公众号:Android系统攻城狮

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】??

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

欢迎关注Android系统攻城狮

1.前言

工欲善其事,必先利其器,本节介绍一款源码查看工具,特别是代码特别庞大时,往往不知道从何下手,counsel-gtags可以帮助你极大提高工作效率。
  • 1

2.安装

<1>.下载与安装
# git clone https://github.com/syohex/emacs-counsel-gtags.git
# cp counsel-gtags.el ~/.emacs.d/site-lisp
  • 1
  • 2
<2>.配置
# emacs ~/.emacs
;;counse-gtags
(add-hook 'c-mode-hook 'counsel-gtags-mode)
(add-hook 'c++-mode-hook 'counsel-gtags-mode)

(with-eval-after-load 'counsel-gtags
  (define-key counsel-gtags-mode-map (kbd "M-t") 'counsel-gtags-find-definition)
  (define-key counsel-gtags-mode-map (kbd "M-r") 'counsel-gtags-find-reference)
  (define-key counsel-gtags-mode-map (kbd "M-s") 'counsel-gtags-find-symbol)
  (define-key counsel-gtags-mode-map (kbd "M-,") 'counsel-gtags-go-backward))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.使用

<1>.创建索引
M-x  counsel-gtags-create-tags
  • 1
<2>.快捷键
M-t:查看函数/变量定义
M-r:查看被谁调用
M-s:查看函数
M-,:返回
  • 1
  • 2
  • 3
  • 4
<3>.例子

例如:查看ffmpeg源码中的avio_open2函数定义
在这里插入图片描述

M-t
  • 1

匹配结果:
在这里插入图片描述
查询到函数avio_open2在libavformat/aviobuf.c的1241行定义,再按Enter直接进入,如下图所示结果:
在这里插入图片描述
M-,:返回原来得位置
M-r:查看谁调用函数avio_open2
在这里插入图片描述


更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮