A depuração é uma ferramenta muito útil para inspecionar o estado dos objetos e variáveis no seu código em tempo de execução.
Como mencionado anteriormente nas respostas acima, a depuração é extremamente útil, mas há alguns casos em que é limitada.
Na minha experiência, acho que usar o depurador é muito útil, pois ajuda a revelar suposições falsas que eu estava fazendo sobre o estado do meu código. Algumas pessoas não são tão astutas ao ler o código para encontrar um bug; portanto, a depuração pode ajudar a revelar suposições falsas que você ou outro desenvolvedor fez sobre o estado do código.
Talvez você espere que um parâmetro nunca seja nulo quando passado para um método, portanto nunca verifique esse caso e continue o método como se esse parâmetro nunca fosse nulo. A realidade é que o parâmetro acabará sendo nulo em algum momento, mesmo se você definir como pré-condição o método para que o parâmetro nunca seja nulo. Isso sempre vai acontecer.
Em contraste com a utilidade dos depuradores nos exemplos acima mencionados, acho difícil e um pouco inútil usar quando o multi-threading (ou seja, simultaneidade, processamento assíncrono) está envolvido. Isso pode ajudar, mas é fácil perder sua orientação no nevoeiro multithread quando os pontos de interrupção do depurador estão sendo atingidos em um thread no ponto A e um thread completamente separado no ponto B. O desenvolvedor é forçado a empurrar o novo ponto de interrupção " processo de pensamento "no topo da" pilha "de seu cérebro e orientar-se para o código no ponto do novo ponto de interrupção. Depois que a relevância do ponto de interrupção B diminui, o desenvolvedor volta ao primeiro ponto de interrupção e precisa lembrar o que estava procurando antes do gatilho do ponto de interrupção B. Sei que essa pode ser uma explicação confusa,
Além disso, a imprevisibilidade do código simultâneo pode distrair ainda mais o desenvolvedor na depuração de código simultâneo.
Em conclusão, na minha opinião honesta:
- Depuração quando a simultaneidade é usada = tendência aumentada para perder o foco do "padrão de pensamento de depuração"
e
- a qualquer momento = maior produtividade da depuração porque sua atenção não é interrompida por pontos de interrupção inesperados (inesperados devido às condições da corrida).