Debugging is a Conversation with Your Past Self
There's a particular kind of frustration that shows up during debugging: staring at code you wrote, wondering what past-you was thinking. Usually the honest answer is that past-you had less information and was solving a narrower problem than the one you're facing now.
That reframe changes how debugging feels. Instead of 'why is this code wrong,' the more useful question is 'what did the person who wrote this believe was true, and where did that stop being the case?' Almost every confusing bug is a violated assumption, not a mistake.
This is also why good comments age so differently from good code. Code describes what happens; a comment that explains why can tell future-you exactly which assumption to check first, saving the whole conversation.
The best debugging sessions end not just with a fix, but with an answer to 'how did this seem reasonable at the time.' That answer is usually more useful than the fix itself, because it's the thing that stops the next version of this bug from happening somewhere else.