热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GNUGLOBALソースコードタグシステム

http:uguisu.skr.jpWindowsgtags.htmlGNUGLOBAL(gtags)は、ソースコードのタグジャンプです。簡単に複数のソース中から関数や、変数の定義

 

http://uguisu.skr.jp/Windows/gtags.html

 

 

GNU GLOBAL(gtags)は、ソースコードのタグジャンプです。簡単に複数のソース中から関数や、変数の定義元/参照元を見つけ、その箇所に移動することができます。

ctags、etags(cygwin や Linux に大抵標準で含まれています)と同じ働きをしますが、gtags はさらに強力な機能を持っています。大量の他人の書いたソースを読むプログラマには、必須だと思います。




GNU GLOBAL(gtags) の特徴


gtags は、次のような特徴を持っています。

  • C、 C++、 Yacc、 Java、 PHP4 のソースコードに対応しています。
  • 関数の呼び出し元を参照できます。
  • 複数の候補が存在する場合は、一覧で表示してくれます。
  • タグ情報より、HTMLを生成できます。
  • コマンドラインや、vi、emacs などで利用可能です。
  • GNU GLOBAL(gtags) : http://www.gnu.org/software/global/global.html

サイトの DownLoad のページより「global-x.x.x.tar.gz」をダウンロードしてください。


GNU GLOBAL(gtags) のインストール方法


通常のインストールと同様です。cygwin 上でも、最近のものを利用する場合は問題ありません。

  1. tar zxvf global-x.x.x.tar.gz(もしくは gzip -dc global-x.x.x.tar.gz | tar xv -)
  2. cd global-x.x.x
  3. ./configure (--prefix=任意の場所)
  4. make
  5. make install

なお、Cygwin の場合は、+Devel から、gcc, make を予めインストールしておいて下さい。

また、Cygwin の /usr/local/bin(例: C:/cygwin/usr/local/bin) にPATHを通しましょう。


「gtags.el」の移動


emacsを利用する場合は、任意のフォルダに global-x.x.x ディレクトリ内にある 「gtags.el」 をコピーしてください。

※ 「.emacs」に以下の一文を追加してください。(下記は「~/lisp」に「gtags.el」をコピーした場合です)

;; load-pathに追加
(setq load-path (cons "~/lisp" load-path))

Meadowを利用する場合は、C:/Meadow/site-lisp ディレクトリに global-x.x.x ディレクトリ内にある 「gtags.el」 をコピーしてください。

「gtags.el」の移動

vi を利用する場合は、「$HOME/.vim/plugin」フォルダに 「gtags.vim」 をコピーしてください。

cp /usr/local/share/gtags/gtags.vim $HOME/.vim/plugin

使用方法

プログラムソースのあるトップのディレクトリで、次のコマンドを入力します。

gtags -v

ファイル数によっては、かなりの時間を要します。

しばらくすると、「GPATH」「GRTAGS」「GSYMS」「GTAGS」のファイルが作成されます。

実際に利用したファイルサイズは、次のようなものです(ファイル数 152個)。

$ ls -lh
total 4.0M
-rw-r--r-- 1 hoge なし 32K May 1 02:07 GPATH
-rw-r--r-- 1 hoge なし 2.6M May 1 02:07 GRTAGS
-rw-r--r-- 1 hoge なし 736K May 1 02:07 GSYMS
-rw-r--r-- 1 hoge なし 552K May 1 02:07 GTAGS
drwxr-xr-x+ 12 hoge なし 0 May 1 01:59 global-4.8.5/

また、HTML化は次のコマンドで可能です。

htags -saF

ただし、非常に大きなファイルとなり、時間もかかります。

emacs/Meadow 上での使用方法

emacs/Meadow を起動して、次のコマンドで gtags モードに変更できます。

M-x gtags-mode

このとき、「.emacs」に以下を追加しておけば、便利になります。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GNU GLOBAL(gtags)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
'(lambda ()
(local-set-key "/M-t" 'gtags-find-tag)
(local-set-key "/M-r" 'gtags-find-rtag)
(local-set-key "/M-s" 'gtags-find-symbol)
(local-set-key "/C-t" 'gtags-pop-stack)
))

  • Ctrl+t gtagsでジャンプする一つ前の状態に戻る
  • Alt+s 指定した変数、定義の定義元を探す
  • Alt+r 指定した関数が参照されている部分を探す
  • Alt+t 指定した関数が定義されている部分をさがす

使い方は、ジャンプしたい関数上で、上記のコマンドを入力します。

なお、Cygwin+Meadow環境では、正しくソースの位置を表示してくれない問題があります。

次のように表示され、正しいソースのある場所を誤ってしまいます。

Use C-u M-x make-directory RET RET to create directory and its parents

Cygwin パスを理解させたいのであれば、次のElisp を利用して下さい。

  • cygwin-mount.el : http://www.emacswiki.org/elisp/cygwin-mount.el

ダウンロードした「cygwin-mount.el」は「C:/Meadow/site-lisp」に置きましょう。

また、「.emacs」に以下を追加しておきます。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; cygwin-mount
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (and (featurep 'meadow) (locate-library "cygwin-mount"))
(require 'cygwin-mount)
(cygwin-mount-activate))

vim 上での使用方法

:Gtags main

で global -t main を実行し、結果をエラーウィンドウで開く。

'-r' で参照元一覧をエラーウィンドウに表示

:Gtags -r func1

main.c 内のオブジェクト一覧

:Gtags -f main.c <- locate objects in main.c

% や # も使える

:Gtags -f % <- locate objects in main.c

コマンドライン 上での使用方法

例えば、「grep」関数が、どのファイルで定義されているかは、次のように調べます。

$ global grep
global-4.8.5/global/global.c # grep() は global.c で定義されている

&#39;-t&#39; オプションで ctags フォーマット表示

$ global -t help
help global-4.8.5/global/global.c 103
help global-4.8.5/gozilla/gozilla.c 76
help global-4.8.5/gtags-parser/gctags.c 132
help global-4.8.5/gtags/gtags.c 110
help global-4.8.5/htags/htags.c 256

&#39;-r&#39; オプションで参照元表示。help() は 次のファイルで参照されている。

$ global -r help
global-4.8.5/global/global.c
global-4.8.5/gozilla/gozilla.c
global-4.8.5/gtags-parser/gctags.c
global-4.8.5/gtags/gtags.c
global-4.8.5/htags/htags.c

&#39;-x&#39; オプションで詳細表示

$ global -x grep
grep 755 global-4.8.5/global/global.c grep(pattern)

&#39;-a&#39; オプションで絶対パス表示

$ global -a grep
/home/hoge/global-4.8.5/global/global.c

global下载

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



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
author-avatar
xwt4818386
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有