Next: Examples of gnatfind Usage, Previous: Regular Expressions in gnatfind and gnatxref, Up: The Cross-Referencing Tools gnatxref and gnatfind
gnatxref UsageFor the following examples, we will consider the following units :
| main.ads: 1: with Bar; 2: package Main is 3: procedure Foo (B : in Integer); 4: C : Integer; 5: private 6: D : Integer; 7: end Main; main.adb: 1: package body Main is 2: procedure Foo (B : in Integer) is 3: begin 4: C := B; 5: D := B; 6: Bar.Print (B); 7: Bar.Print (C); 8: end Foo; 9: end Main; bar.ads: 1: package Bar is 2: procedure Print (B : Integer); 3: end bar; |
gnatxref main.adbgnatxref generates cross-reference information for main.adb
and every unit 'with'ed by main.adb.
The output would be:
B Type: Integer
Decl: bar.ads 2:22
B Type: Integer
Decl: main.ads 3:20
Body: main.adb 2:20
Ref: main.adb 4:13 5:13 6:19
Bar Type: Unit
Decl: bar.ads 1:9
Ref: main.adb 6:8 7:8
main.ads 1:6
C Type: Integer
Decl: main.ads 4:5
Modi: main.adb 4:8
Ref: main.adb 7:19
D Type: Integer
Decl: main.ads 6:5
Modi: main.adb 5:8
Foo Type: Unit
Decl: main.ads 3:15
Body: main.adb 2:15
Main Type: Unit
Decl: main.ads 2:9
Body: main.adb 1:14
Print Type: Unit
Decl: bar.ads 2:15
Ref: main.adb 6:12 7:12
that is the entity Main is declared in main.ads, line 2, column 9,
its body is in main.adb, line 1, column 14 and is not referenced any where.
The entity Print is declared in bar.ads, line 2, column 15 and it
it referenced in main.adb, line 6 column 12 and line 7 column 12.
gnatxref package1.adb package2.adsgnatxref will generates cross-reference information for
package1.adb, package2.ads and any other package 'with'ed by any
of these.
gnatxref can generate a tags file output, which can be used
directly from vi. Note that the standard version of vi
will not work properly with overloaded symbols. Consider using another
free implementation of vi, such as vim.
$ gnatxref -v gnatfind.adb > tags
will generate the tags file for gnatfind itself (if the sources
are in the search path!).
From vi, you can then use the command `:tag entity' (replacing entity by whatever you are looking for), and vi will display a new file with the corresponding declaration of entity.