I haven't worked in any environment that made it easier to do symbolic debugging, including attaching a symbolic debugger remotely (over the network) to a running process on another machine. Note that the process in question does need to have been started with certain specific command line arguments in order to do this, and most of the time you don't run your apps with the JDWP[1] stuff turned on, for security and performance reasons. But if you have a web app or something that's misbehaving, it's incredibly handy to be able to turn that on, fire up Eclipse (or whatever), connect the debugger, and use all your standard step over, step into, etc. debugging facilities[2].
[1]: https://docs.oracle.com/javase/8/docs/technotes/guides/troub...
[2]: https://dzone.com/articles/remote-debugging-java-application...
I would prefer languages where the need for interactive debugging is minimized through the type system, good abstractions, and good testing frameworks. Functional languages (ideally strongly typed), or something like Rust, tend to fall into this category. And even for less strict languages, I find debugging to be significantly slower than spending upfront time writing testable abstractions, which usually means functional code that operates on immutable data structures when possible.
Debuggability is nice... but isn't not having to debug even better?