world leader in high performance signal processing
Trace:

Differences

This shows you the differences between two versions of the page.

cscope_and_tags [2007/01/13 09:31] (current)
rgetz created
Line 1: Line 1:
 +====== Cscope and Tags ======
 +
 +[[http://cscope.sourceforge.net/|Cscope]] is a developer's tool for browsing source code. Cscope and tags can be a particularly useful tools to wade into a large code base like the Linux kernel. You can save yourself a lot of time by being able to do fast, targeted searches rather than randomly grepping through the source files by hand.
 +
 +===== Cscope =====
 +Cscope has an long Unix pedigree, having been originally developed at Bell Labs back in the days of the PDP-11. Cscope was part of the official AT&T Unix distribution for many years, and has been used to manage projects, including the Linux kernel.
 +
 +Cscope is:
 +  * Curses based (text screen)
 +  * An information database is generated for faster searches and later reference
 +  * The fuzzy parser supports C, but is flexible enough to be useful for C++ and Java, and for use as a generalized 'grep database' (use it to browse large text documents!)
 +  * Has a command line mode for inclusion in scripts or as a backend to a GUI/frontend
 +  * Runs on all flavors of Unix
 +
 +Cscope allows searching code for:
 +  * all references to a symbol
 +  * global definitions
 +  * functions called by a function
 +  * functions calling a function
 +  * text string
 +  * regular expression pattern
 +  * a file
 +  * files including a file
 +
 +To learn how to use Cscope look at the [[http://cscope.sourceforge.net/cscope_man_page.html|man page]]. The Linux kernel has a support for cscope build in<code>
 +rgetz@imhotep:~/uClinux-dist/linux-2.6.x> make cscope
 +  FILELST cscope.files
 +  MAKE    cscope.out
 +rgetz@imhotep:~/uClinux-dist/linux-2.6.x> cscope
 +</code>
 +
 +===== Tags =====
 +
 +[[http://ctags.sourceforge.net/|Ctags]] also generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object).
 +
 +It is capable of generating tags for all types of C/C++ language tags, including all of the following:
 +  * class names
 +  * macro definitions
 +  * enumeration names
 +  * enumerators
 +  * function definitions
 +  * function prototypes/declarations
 +  * class, interface, struct, and union data members
 +  * structure names
 +  * typedefs
 +  * union names
 +  * variables (definitions and external declarations) 
 +