I have no experience with debugging proc macros myself, but I imagine it could be possible - on a nightly compiler - to use this API to generate nice debugging information that doesn't stop any further compilation. Presumably, one could even permanently integrate emission of such debug information under a crate feature (properly documented to be unstable, nightly-only and intended for debugging purposes only) into a procedural macros crate.
I normally take a bottom-up approach where I'll implement one part of the proc-macro in its own function or ToTokens impl then write tests that assert the tokens I got are exactly what I expected.
That way, instead of reactively debugging things, you proactively make sure your code generates the expected tokens.
I believe the Diagnostic API is intended for emitting the normal hint/warn/error messages that the Rust compiler would use to indicate compile errors.
I guess you could use it as a form of println!() debugging akin to OP's panic!() which doesn't abort execution, but that feels like you are misusing the feature.
I'd compare this kind of behavior to what you get when you're activating trace_macros, which is just an ordinary dignostic as well, more precisely a note: