All of this is easy in Common Lisp, which includes interactive compile-time debugging. You can use #., EVAL-WHEN, LOAD-TIME-VALUE, and other things to control evaluation time, and use the same, usual, interactive debugger that you use for runtime code, without any extra infrastructure or scaffolding.
In C++, to debug failed constexpr’s, often, you have to make it a non-constexpr and debug at runtime.
I’m not sure that’s even close to equivalent in execution-time debugging, and doesn’t work well with large, existing code bases with crafted build steps. These are transparent, non-issues in Common Lisp.
In C++, to debug failed constexpr’s, often, you have to make it a non-constexpr and debug at runtime.