Be verbose. xxx is a combination of the following :
e : Show errors. This option is on by default.
w : Issue warnings.
n : Issue notes.
h : Issue hints.
i : Issue informational messages.
l : Report number of lines processed (every 100 lines).
u : Show information on units being loaded.
t : Show names of files being opened.
p : Write parse tree (tree.log)
q : Show message numbers.
c : Notify on each conditional being processed.
mxxx : xxx is a comma-separated list of messages numbers which should not be shown. This option can be specified multiple times.
d : Show additional debugging information.
0 : No messages. This is useful for overriding the default setting in the configuration file.
b : Show all procedure declarations if an overloaded function error occurs.
x : Show information about the executable (Win32 platform only).
r : Format errors in RHIDE/GCC compatibility mode.
a : Show all possible information. (this is the same as specifying all options)
b : Tells the compiler to write filenames using the full path.
v : Write copious debugging information to file. fpcdebug.txt..
s : Write timestamps. Mainly for the compiler developers.
p Write parse tree to file tree.log. (Intended for compiler developers.)
z Write compiler messages to standard error instead of standard output.
The difference between an error/fatal error/hint/warning/note is the severity:
The compiler encountered an error, and can no longer continue compiling. It will stop at once.
The compiler encountered an error, but can continue to compile (at most till the end of the current unit).
if there is a warning, it means there is probably an error, i.e. something may be wrong in your code.
Is issued if the compiler thinks the code could be better, but there is no suspicion of error.
Is some noteworthy information, but again there is no error.
The difference between hints and notes is not really very clear. Both can be ignored without too much risk, but warnings should always be checked.