La depuración es una herramienta muy útil para inspeccionar el estado de los objetos y las 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 limitado.
En mi experiencia, el uso del 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 a la hora de 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 con el método como si ese parámetro nunca fuera nulo. La realidad es que el parámetro hará terminará siendo nulo en algún punto, incluso si establece como condición previa al método que el parámetro nunca debe ser nulo. Siempre sucederá.
A diferencia de la utilidad de los depuradores en los ejemplos mencionados anteriormente, me resulta difícil y un poco inútil usarlos cuando se trata de subprocesos múltiples (es decir, concurrencia, procesamiento asíncrono). Puede ayudar, pero es fácil perder su orientación en la niebla de múltiples subprocesos cuando los puntos de interrupción del depurador están siendo alcanzados 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 interrupción " proceso de pensamiento "en la parte superior de la" pila "de su cerebro y orientarse a sí mismo al código en el punto del nuevo punto de interrupción. Después de que la relevancia del punto de interrupción B disminuye, el desarrollador vuelve al primer punto de interrupción y tiene que recordar lo que buscaba antes del desencadenante del punto de interrupción B. Sé que esto puede ser una explicación confusa, pero mi punto en este párrafo es que la depuración donde se usa la concurrencia puede ser muy AGREGABLE (Trastorno de déficit de atención), por lo que puede ser más difícil seguir siendo productivo en su patrón de pensamiento de depuración.
También la imprevisibilidad del código concurrente puede distraer aún más al desarrollador en la depuración del código concurrente.
En conclusión, en mi sincera opinión:
- Depuración cuando se usa la concurrencia = mayor tendencia a perder el enfoque del "patrón de pensamiento de depuración"
y
- en cualquier otro momento = aumento de la 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).