The standard default format for error messages is called 'brief format'.
Brief format messages are written to
stderr (the standard error
file) and have the following form:
e.adb:3:04: Incorrect spelling of keyword "function" e.adb:4:20: ";" should be "is"
The first integer after the file name is the line number in the file, and the second integer is the column number within the line. GPS can parse the error messages and point to the referenced character. The following switches provide control over the error message format:
stdout(the standard output file. The same program compiled with the `-gnatv' switch would generate:
3. funcion X (Q : Integer) | >>> Incorrect spelling of keyword "function" 4. return Integer; | >>> ";" should be "is"
The vertical bar indicates the location of the error, and the
prefix can be used to search for error messages. When this switch is
used the only source lines output are those with errors.
p.adbmight look like:
Compiling: p.adb 1. package body p is 2. procedure a; 3. procedure a is separate; 4. begin 5. null | >>> missing ";" 6. end; Compiling: p.ads 1. package p is 2. pragma Elaborate_Body | >>> missing ";" 3. end p; Compiling: p-a.adb 1. separate p | >>> missing "(" 2. procedure a is 3. begin 4. null | >>> missing ";" 5. end;
When you specify the `-gnatv' or `-gnatl' switches and
standard output is redirected, a brief summary is written to
stderr (standard error) giving the number of error messages and
warning messages generated.
fnamedoes not start with a period, then it is the full name of the file to be written. If
fnameis an extension, it is appended to the name of the file being compiled. For example, if file
xyz.adbis compiled with `-gnatl=.lst', then the output is written to file xyz.adb.lst.
stderr(the standard error file) as well as the verbose format message or full listing (which as usual is written to
stdout(the standard output file).
e.adb:3:04: Incorrect spelling of keyword "function" e.adb:5:35: missing ".." fatal error: maximum number of errors detected compilation abandoned
The default setting if no switch is given is 9999. If the number of warnings reaches this limit, then a message is output and further warnings are suppressed, but the compilation is continued. If the number of error messages reaches this limit, then a message is output and the compilation is abandoned. A value of zero means that no limit applies.
Note that the equal sign is optional, so the switches `-gnatm2' and `-gnatm=2' are equivalent.
e.adb:7:07: "V" is undefined (more references follow)
where the parenthetical comment warns that there are additional references to the variable V. Compiling the same program with the `-gnatf' switch yields
e.adb:7:07: "V" is undefined e.adb:8:07: "V" is undefined e.adb:8:12: "V" is undefined e.adb:8:16: "V" is undefined e.adb:9:07: "V" is undefined e.adb:9:12: "V" is undefined
The `-gnatf' switch also generates additional information for some error messages. Some examples are:
If the `-gnatjnn' switch is used with a positive value for nn, then messages are output in a different manner. A message and all its continuation lines are treated as a unit, and count as only one warning or message in the statistics totals. Furthermore, the message is reformatted so that no line is longer than nn characters.
ALIfile is not generated if any illegalities are detected in the program. The use of `-gnatQ' forces generation of the
ALIfile. This file is marked as being in error, so it cannot be used for binding purposes, but it does contain reasonably complete cross-reference information, and thus may be useful for use by tools (e.g., semantic browsing tools or integrated development environments) that are driven from the
ALIfile. This switch implies `-gnatq', since the semantic phase must be run to get a meaningful ALI file.
In addition, if `-gnatt' is also specified, then the tree file is generated even if there are illegalities. It may be useful in this case to also specify `-gnatq' to ensure that full semantic processing occurs. The resulting tree file can be processed by ASIS, for the purpose of providing partial information about illegal units, but if the error causes the tree to be badly malformed, then ASIS may crash during the analysis.
When `-gnatQ' is used and the generated
ALI file is marked as
being in error, `gnatmake' will attempt to recompile the source when it
finds such an
ALI file, including with switch `-gnatc'.
Note that `-gnatQ' has no effect if `-gnats' is specified, since ALI files are never generated if `-gnats' is set.