La depuración es una herramienta muy útil para inspeccionar el estado de los objetos y variables en su código en tiempo de ejecución.
Como se mencionó anteriormente en las respuestas anteriores, la depuración es extremadamente útil, pero hay algunos casos en los que es limitada.
En mi experiencia, encuentro que usar el depurador es muy útil porque ayuda a revelar suposiciones falsas que estaba haciendo sobre el estado de mi código. Algunas personas no son tan astutas al leer el código para encontrar un error, por lo que la depuración puede ayudar a revelar suposiciones falsas que usted u otro desarrollador hicieron sobre el estado del código.
Tal vez espere que un parámetro nunca sea nulo cuando se pasa a un método, por lo que nunca verifica ese caso y continúa en el método como si ese parámetro nunca fuera nulo. La realidad es que el parámetro será llegar a ser nula en algún momento incluso si se establece como condición previa para el método que el parámetro no debe ser nulo. Siempre sucederá.
En contraste con la utilidad de los depuradores en los ejemplos antes mencionados, me resulta difícil y de alguna manera no útil usar cuando se trata de subprocesos múltiples (es decir, concurrencia, procesamiento asincrónico). Puede ayudar, pero es fácil perder su orientación en la niebla de varios subprocesos cuando los puntos de interrupción del depurador se tocan en un hilo en el punto A y en un hilo completamente separado en el punto B. El desarrollador se ve obligado a empujar el nuevo punto de ruptura " proceso de pensamiento "en la parte superior de la" pila "de su cerebro y orientarse al código en el punto del nuevo punto de interrupción. Después de que disminuye la relevancia del punto de interrupción B, el desarrollador vuelve al primer punto de interrupción y tiene que recordar lo que estaba buscando antes del desencadenante del punto de interrupción B. Sé que esta puede ser una explicación confusa,
Además, la imprevisibilidad del código concurrente puede distraer aún más al desarrollador al depurar el código concurrente.
En conclusión, en mi sincera opinión:
- Depuración cuando se usa concurrencia = mayor tendencia a perder el foco del "patrón de pensamiento de depuración"
y
- en cualquier otro momento = mayor productividad de depuración b / c su atención no se ve interrumpida por puntos de interrupción inesperados (inesperados debido a las condiciones de la carrera).