Debuggers are pretty useful when working with stateful programs that grow beyond a size where you can keep the state in your head. When working in 100+kloc C++ OOP codebases I would be quit my job if there was no debugger.
The solution I like to use in Julia is to avoid stateful programming and test code on-the-fly in the Repl. Write functions that take immutable values and return values. Aside from ( usually large ) arrays being passed by reference, which is a necessity for efficient numerical programming. I think this is kind of how Julia is intended to be used. https://docs.julialang.org/en/v1/manual/workflow-tips/ + the excellent Repl helper packages.
I haven’t once felt I needed a debugger in Julia yet, but I haven’t worked with large amounts of code written by other people yet. Still, I’d sure be easier to convince my colleagues to use Julia if there was a debugger.
Test driven development has gotten a lot of traction recently, but I find it can be too much and bloat out the already large codebase you have to maintain. You have to maintain tests as well. Quality over quantity for tests should be a focus.