Senior here, I started to use LLMs recently but I still use a debugger. Working with complex code it helps me find the difference between what I think should be happening and what really happens. I don't think a LLM could do better for this task.
Also, I use debuggers for print debugging: insert a breakpoint which doesn't suspend execution but prints something (perhaps conditionnaly.) That way no need to recompile the whole thing and restart it after adding a print statement.
Also, I use debuggers for print debugging: insert a breakpoint which doesn't suspend execution but prints something (perhaps conditionnaly.) That way no need to recompile the whole thing and restart it after adding a print statement.