У меня двойственное ощущение.

С одной стороны, мой начальный опыт развития совпадает с тем, что описал Эдуард. То есть, отладка программ с помощью пошагового исполнения, возможность "видеть" состояние на каждом шаге - ты "вживую" наблюдаешь за поведением вычислителя имени фон Неймана. И на самом деле, такое продвигает в понимании внутренней "кухни", а в тот исторический период (компы были "слабыми" - мало ОЗУ, сегментация памяти, прямой доступ к видео, портам и.т.п.) это было действительно необходимо.

С другой стороны, когда начал делать программы, где останавливать вычислителя просто нельзя было (алгоритмы зависели от dt в реалтайме), то отладчик отпал сам собой (кстати, а как использовать отладчик в параллельных вычислениях, я вапще не представляю!). Потом перешёл на оберон - а тут вообще ситуация интересная! Ход исполнения прекрасно наблюдается по исходнику без применения спец.инструментов типа отладчика.Разница между тем, что ты написал, и тем, как выполняется программа - минимальна. Если возникает надобность в отладчике, то, скорее всего, программа на обероне составлена неправильно.

Я думаю, что если придерживаться виртовской идеологии, когда сознание программиста должно быть отделено от особенностей вычислителя, то отладчик не нужен, и даже вреден, т.к. нарушает картину. А вот в других случаях, когда кишки вычислителя открыты взору, то нужен крайне.