A good debugger will show you the internals of a running program. This is crucial to seeking out logic errors. The reason you are using a debugger is that something is incorrect with your program.

I've tried working without a debugger recently. It was very empowering to know that you can do it. The end result is that you wind up writing lots of information to a log file. This is a feature in server based applications. I am not writing a server application.

Next I moved to a better environment and had access to a debugger. It functioned as expected and was quite helpful. The thing that I did not enjoy was editing the launch specification for the programs: JSON files.

The time spent editing the launch configurations made me wish for a good debugger. I know the term is subjective but in this case *good* means *it just works*.

The environment I wound up in working within had an integrated debugger. Changes made to classes and their location get reflected in the environment. I spent less time working on the debugger and more time using the debugger.

My progression went from Emacs --> Visual Studio Code --> JetBrains Rider all running on Linux. This is coming off of Visual Studio Professional on Windows. I am glad I made the switch. I am glad I made the tools progression too. I no longer have to wonder if I could do it the hard way.