There is a simple concept that shows you how important, vast and different from programming, debugging is. Troubleshooting something (especially the investigation part) is an entirely different skill set from creating something. They work in opposite directions.
During design, you're assembling various components to get a desired outcome. During troubleshooting, you start from an observed anomaly and work your way back to the component that's faulty. While this difference may sound insignificant, the reasoning (mental algorithms) we employ in each direction are entirely different[1].
The ability to reason in both directions is a force multiplier at any stage of the project. This is true in any field of engineering. We need to put significantly more effort into learning debugging skills. Debuggers like GDB also reflect this complexity.
[1] If you're familiar with systems reliability engineering, you can see this in action in FTA (Fault Tree Analysis) and FMEA (Failure Mode Effects Analysis).