учить пользоваться инструментом нужно со школы. Учить отлаживать программы. Не на уровне: вот это, ребята отладчик, но он не нужен, но если хотите, вот тут нажмите пимпочку, сюда забейте текст, тут откроется вьюшка, здесь вылезет какая-то фиговина, ну в общем это сложно, лучше используйте Log.OutXXX ))).
Их нужно учить отлаживать программы. Они должны знать что такое отладка. Принципы и способы отладки. Их нужно сразу учить, чтобы сформировать понимание, когда нужно использовать отладчик, когда логирование, когда трассировку... а когда их комбиноровать.
Отладка, на самом деле, не простая штука, и чесм раньше будет заложен фундамент, тем лучше во всех смыслах.
Проблема в том, что преподы редко понимают, что такое отладка, поэтому и боязь всяких страшных слов типа пошаговый отладчик).
Ну и выше человек верно сказал. Есмли мы взялись за отладчик, отлаживать нужно именно тот бинарник, на котором воспроизводится ошибка, без изменений. Потому что внесение дополнительных переменных, вызовов, меняет картину. Бывает так, что проблема вообще не в этом исходном коде. Хороший пример здесь был с OO2C, когда кто-то скомпилировал алгоритм отрисовки линии, и он не работал как нужно, но внесение лишней переменной совершенно меняло картину. Правила Юниттестирования также требуют, чтобы тестируемый код и распространяемый код решения не отличались, а иначе не понятно, что же вы там тестировали))_ А поэтому пихать туда вывод, для отладки, а потом удалять, не правильный подход. Или не удалять или не пихать, но оставлять лишний код, не несущий смысловой нагрузки - моветон.