Earlier quoted context omitted.
The problem is it can be extremely difficult to map those stack trace calls to concrete Java code, because so much of a Spring application is generated from an annotation, or code getting called simply because a dependency exists on the classpath. Sometimes classes appear out of thin air, with no Java code existing for them at all, summoned into existence by some annotation somewhere. Object Oriented Programming has…
Java has annotations, C/C++ has macros, every language from Lisp to Rust to Scala has some form of macros or annotations. These can often be very powerful, but of course debugging is more complicated.
Only if macros are second-class relative to built-in primitives in terms of debug support.
E.g. typical C compiler and debugger not knowing anything about C macros; if we make a loop construct entirely in a C LOOP(...) macro (spanning many lines of the source file), any error within the statements and expressions enclosed in LOOP will be reported against LOOP's line number. Moreover, we will not be able to step through those individual expressions in the debugger.