¿Cuáles son algunos trucos de depuración que sigues en el trabajo?

Pasos para evitar la depuración de errores básicos:

  • Use aserciones y registros generosamente al escribir cualquier pieza de código.
  • Ejecute componentes individuales de forma interactiva con entradas típicas, ya que el código se está escribiendo cuando TDD parece ser una exageración.
  • Use linters para detectar errores de sintaxis.

Depuración

1. Asegúrese de que se esté ejecutando la versión actual del código.

2. Lea el código y busque algunos patrones de error comunes que se encuentran en la aplicación en particular.

3. Asegúrese de que el problema esté relacionado con el código y no con los datos.

4. Agregue más impresiones y vuelva a ejecutar la aplicación.

5. Agregue pruebas unitarias para funciones que aún no tienen pruebas.

6. Ejecute monitores de recursos y trace el uso de recursos (memoria, CPU, subprocesos, sockets, accesos a disco, archivos abiertos).

7. Finja escribir una pregunta de StackOverflow explicando el problema de manera concisa a alguien que no tiene contexto.

Uso Git, por lo que esta es una respuesta relacionada con Git porque puede ser de gran ayuda. También puede usar las mismas técnicas con otros VCS, pero generalmente es más torpe.

  1. Usa Git correctamente. Eso significa hacer compromisos lo suficientemente pequeños. Más tarde puedes aplastarlos. No sé ustedes, pero no ejecuto todas las pruebas todo el tiempo (tomaría demasiado tiempo). Haces esto y puedes usar git-bisect para tratar de encontrar la causa del error. Si eres un integrador, esto es realmente obligatorio. De esta manera, en cuestión de minutos, a menudo puede averiguar qué confirmación causa el error y reenviarlo a la persona correcta. Cuando haya encontrado el commit ofensivo, verifique diff a la versión anterior y, a menudo, encontrará el error en ese punto. La mejor manera de hacerlo es definir una herramienta diff para Git.
  2. Mantenga un registro de lo que ha intentado. De hecho, debería hacer esto más a menudo, porque a menudo me doy cuenta de que olvidé cuál fue el resultado de alguna carrera. Nuevamente, Git también es tu amigo porque puedes crear muchas ramas para diferentes intentos. Si lo olvida, simplemente revise esa rama y vuelva a ejecutar.
  3. Si printf () falla (lo que a menudo ocurre en mi línea de trabajo debido a tiempos ajustados), creo una estructura global que tiene los campos que necesito. Uno podría ser un contador que dirá en qué punto se bloquea el sistema, si el bloqueo ocurre en la fase de inicialización.
  4. Tiendo a tener estas macros de depuración desde I con C. No solo puedo activarlas o desactivarlas fácilmente, sino también cambiarlas para usar la estructura en el consejo anterior. Por ejemplo, podría incluir una cadena con el nombre de la función y he agregado esta llamada al comienzo de cada función. En producción, la macro está vacía.
  5. Simplificar. Comience a extraer el código pieza por pieza el mayor tiempo posible. Cuanto menos código tenga que tenga el error, más fácil será encontrarlo. O, por supuesto, si decepciona, podría ser una pista útil. De nuevo, Git es tu amigo aquí. Puedes experimentar mucho con él.
  6. ¡Aprende las herramientas! Es increíble cuántos desarrolladores o integradores solo conocen las características muy básicas de los depuradores. A menudo tienen puntos de interrupción condicionales, puntos de observación, etc., que son herramientas realmente poderosas.

Esas son algunas de las cosas que puedo pensar desde lo alto de mi cabeza.

Utilizo el método de búsqueda binaria para rastrear los errores.

Funciona igual que una búsqueda binaria. Puedes seguir este algoritmo :

1. Marque el punto de interrupción o verifique la salida en la línea media de su código.
2. La salida esperada lo llevaría a la mitad del código.
3. Repita con este medio código para rastrear los errores.

1. La forma de depurar es poner mensajes de alerta en el medio para ver hasta qué líneas se ejecuta su código según sea necesario …

2. Si está relacionado con datos, insértelos en algunas tablas temporales.

printf, bebé Hazlo simple e inténtalo antes de hacer algo elegante. No es ciencia de cohetes el 95% del tiempo.

More Interesting

¿Por qué muchas compañías de hardware todavía producen un software tan horrible?

Soy un ingeniero de software con 140K + salario en el área de Los Ángeles. Estoy planeando comprar metro existente. ¿Con qué frecuencia necesito trabajar en la tienda?

¿El trabajo de software es una dificultad para las mujeres?

¿Cuál es un escenario en el que ha utilizado un patrón de fábrica en el desarrollo de aplicaciones de software?

¿Puedo convertirme en ingeniero de software sin conocer las estructuras de datos y los algoritmos?

¿Puede una computadora vencer a un GM de ajedrez usando la misma potencia?

¿Cómo es trabajar como ingeniero de software en Tesla Motors?

¿Aproximadamente cuántos ingenieros de software hay en el área metropolitana de Seattle? ¿'Ingeniero de software' puede definirse como cualquier persona con un título de CS que trabaje dentro de la ingeniería en un contribuyente individual o capacidad de liderazgo?

Algún moderador sigue bloqueándome en el foro. ¿Cómo puedo cambiar mi dirección IP? ¿Cambiar mi dirección IP interrumpiría la transferencia de un archivo?

En el contexto de una aplicación Rails, ¿qué hacen los ayudantes y por qué son útiles?

¿Cuál es una buena plataforma de software para recopilar recomendaciones de mejores prácticas y cotejarlas / combinarlas en diferentes dominios?

¿Por qué el software de Apple se está volviendo cada vez más inestable?

¿Debo formar el equipo técnico interno ahora o externalizar el desarrollo, hacer el lanzamiento y contratar talento después?

¿Cuál es el estado actual de la interoperabilidad de .NET y Ruby on Rails?

Me gradué con un título en CS, pero me preocupa si debería haber estudiado medicina en su lugar. ¿Qué tengo que hacer?