Я думаю, что "отладчики" довольно долго не менялись. Большинство просто дает вам информацию о стеке вызовов, потоках, локальных, глобальных и, возможно, некоторой оценке выражений. Этот набор функций довольно хорошо определен, и он работает, поэтому он не сильно изменился. Это, вероятно, не нужно.
Отладчик помогает вам определить ход вашей программы, когда многие другие диагностические инструменты решили сосредоточиться на очень специфических проблемах. Вместо того, чтобы ограничиваться традиционным отладчиком, давайте рассмотрим все пространство диагностических инструментов, поскольку они также помогают нам отлаживать наши проблемы.
- http://en.wikipedia.org/wiki/Valgrind - Если вы подозреваете какую-то проблему, связанную с памятью, вы, вероятно, не начнете проходить код с помощью отладчика.
- http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html - если в вашем коде есть регрессия, пошаговое выполнение отладчика не будет таким полезным, пока вы не узнаете, какой код вызвал регрессию. Инструменты, помогающие сузить код, быстро экономят много времени и, возможно, быстрее, чем традиционный отладчик.
- http://logging.apache.org/log4j/1.2/ - Трассировка может быть старой школой, но люди создают всевозможные инструменты анализа для своих журналов. Делая анализ, вы можете обнаружить ошибки, которые не очевидны. Например, выполнение кода с помощью обычного отладчика не означает, что 90% ваших пользователей не находят кнопку «Оформить заказ» в своей корзине. Но базовый анализ данных может помочь найти все виды ошибок, которых не найдут другие отладчики.
Конечно, есть еще несколько основных инструментов, которые помогают отлаживать очень специфические проблемы: профилировщики, анализаторы сетевого трафика (WireShark, HTTPFox), многие инструменты SysInternals и даже /proc.