Is this really all I needed to start getting better error messages? (declaim (optimize (debug 3))) I'd come to the point after a project or two where I gave up thinking there's just no way to get good error messages on basic syntax errors in generic SLIME usage.
Declaim is a bad idea, I think. What I generally do is (declare (optimize (debug 3))) in the scope of the function I’m interested in.
I think it’s main effect is that it preserves some things, like local variable bindings, that might otherwise get optimized away.
I think the best way to debug macro-related problems in SLIME is to use the macrostepper (C-x M-e, I think) to incrementally expand the problematic form.
I use (sb-ext:restrict-compiler-policy 'debug 3) in my ~/.sbclrc file to ensure debug is always at least 3.