Отладка - это очень полезный инструмент для проверки состояния объектов и переменных в вашем коде во время выполнения.
Как уже упоминалось в ответах выше, отладка чрезвычайно полезна, но в некоторых случаях она ограничена.
По своему опыту я нахожу использование отладчика очень полезным, потому что он помогает выявить ложные предположения о состоянии моего кода. Некоторые люди не настолько проницательны при чтении кода, чтобы найти ошибку, поэтому отладка может помочь выявить ложные предположения о состоянии кода, которые вы или другой разработчик сделали.
Возможно, вы ожидаете, что параметр никогда не будет нулевым при передаче в метод, поэтому вы никогда не проверяете этот случай и продолжаете в методе, как если бы этот параметр никогда не был нулевым. Реальность такова , что параметр будет в конечном итоге нуль в некоторой точке , даже если вы установили в качестве предварительного условия для метода, параметр не должен быть пустым. Это всегда будет происходить.
В отличие от полезности отладчиков в вышеупомянутых примерах, я нахожу это трудным и несколько бесполезным для использования, когда задействованы многопоточность (то есть параллелизм, асинхронная обработка). Это может помочь, но легко потерять ориентацию в многопоточном тумане, когда точки останова отладчика попадают в один поток в точке A и совершенно отдельный поток в точке B. Разработчик вынужден выдвигать новую точку останова ». мыслительный процесс "на вершине" стека "его мозга и ориентироваться на код в точке новой точки останова. После того, как релевантность точки останова B уменьшается, разработчик затем переключается обратно на первую точку останова и должен вспомнить, что он / она высматривал до запуска точки останова B. Я знаю, что это может быть запутанным объяснением,
Также непредсказуемость параллельного кода может еще больше отвлечь разработчика в отладке параллельного кода.
В заключение, по моему честному мнению:
- Отладка при использовании параллелизма = повышенная тенденция терять фокус "отладочного мышления"
а также
- в любое другое время = увеличенная производительность отладки, потому что ваше внимание не прерывается неожиданными остановками (неожиданными из-за условий гонки).