Not all debuggers are line-based. Many of LLVM's tools give descriptive errors ("expressive diagnostics").
Here's an example of gcc versus clang (a "frontend" for LLVM):
$ gcc-4.2 -fsyntax-only -Wformat format-strings.c
format-strings.c:91: warning: too few arguments for format
$ clang -fsyntax-only format-strings.c
format-strings.c:91:13: warning: '.*' specified field precision is missing a matching 'int' argument
printf("%.*d");
^
LLVM is does some cool stuff :). Some other nice examples are at http://clang.llvm.org/diagnostics.html.