Un programador tiene que rastrear el error en el software que causa el error. Luego corrija ese error y vuelva a lanzar la versión corregida.
Encontrar ese error es el problema aquí.
A veces es muy obvio dónde está el problema al examinar los síntomas. Tal vez un cálculo específico de un número particular es incorrecto. Por ejemplo, si divide accidentalmente entre cero (el programa se bloqueará) y al saber lo que estaba haciendo en ese momento, puede encontrar y corregir el error fácilmente.
- ¿Debería un curso de introducción a la universidad CS enseñar con o sin IDE?
- ¿Cómo podría una CPU ejecutar más de una instrucción por ciclo de reloj?
- ¿Cómo maneja Google los problemas de escalabilidad en su motor de búsqueda dado que todos los días, casi todos en el mundo educado buscan en Google?
- ¿Cuáles son las implicaciones de la prueba del problema de Turing y cómo ha afectado el campo de la informática hoy en día?
- ¿Proporcionar energía de la CPU a la investigación científica distribuida acortará la vida útil de la computadora?
A veces, el problema está muy alejado de los síntomas. Por ejemplo, si un fragmento de memoria que está en uso activo está marcado incorrectamente como “no utilizado”, entonces nada sale mal inmediatamente. Algún tiempo después (tal vez microsegundos más tarde, tal vez horas más tarde) otra parte del software solicita asignar algo de memoria y obtiene el bloque incorrectamente “no utilizado”. Ahora, hay dos partes del software, cada una pensando que tienen la propiedad exclusiva de la memoria. Cuando una pieza escribe datos en la memoria, la otra puede reescribirlos fácilmente, y ese es el tipo de cosa que causará todo tipo de errores extraños.
Esto puede ser muy difícil de rastrear … el bloqueo real puede ocurrir en una parte totalmente diferente del código que la pieza que causó el problema … y es posible que el programa se bloquee en un lugar diferente y de una manera diferente cada vez que se ejecuta .
Hay otros tipos de problemas aún más sutiles: uno desagradable se denomina “pérdida de memoria” en el que la memoria se asigna, se usa y NO SE marca como “no utilizada” cuando haya terminado. Esto puede hacer que un programa de larga duración consuma muy lentamente más y más memoria. El programa puede ejecutarse aparentemente correctamente durante horas o incluso días antes de que finalmente consuma toda la memoria libre en la computadora y finalmente se bloquee.
Por lo general, una vez que encuentra el error, la solución es simple, pero hay casos en los que el problema no se puede solucionar fácilmente. Especialmente si el algoritmo completo en el que se basa el programa tiene la culpa.
Existe un conjunto considerable de herramientas que lo ayudan a encontrar errores de diferentes tipos: “depuradores”. Pero solo ayudan hasta ahora. Al final, una de las muchas habilidades que necesita un buen programador es rastrear errores de manera eficiente.