2009-05-27 16 views
6

¿Alguna vez se encontró con un error en el que simplemente no tiene ideas y no sabe qué probar a continuación, y le molesta realmente? ¿Hay alguna idea general sobre cómo salir de este modo?bloque del depurador

Respuesta

11

Cuando me bloquean así, el mejor consejo que he encontrado es dejarlo por un tiempo. Ya sea para un largo almuerzo o salir por el día. Vuelva fresco y tome una nueva mirada. La mayoría de las veces la respuesta será mirarte a la cara. Hasta ahora, un coffee break de 10 minutos no ha sido suficiente para mí, pero su kilometraje puede variar.

En segundo lugar, hable con sus compañeros. Recorre todo lo que has intentado. Solo pídales que escuchen y, mientras lo hace, muchas veces la respuesta llegará.

Esos son los dos que uso más a menudo cuando estoy depurando bloqueado.

+0

Sí ... intentar explicar el problema a un compañero sin duda ayuda a entrenar pensamientos en el orden correcto. – Naveen

+0

http://c2.com/cgi/wiki?RubberDucking – JesperE

+0

Algunas semanas de vacaciones deberían estar bien para mí :) – leppie

3

Normalmente tomo un descanso ... si eso no funciona, duermo con el problema. (En realidad, para ser sincero, debería decir que paso una noche sin dormir pensando en el problema).

Casi siempre tengo lista de posibles soluciones por la mañana. :-)

2

que suelo tomar algunas medidas:

  • vistazo al código que está implicado en la funcionalidad que tiene los mensajes registrador de errores y colocar en una manera que ellos me ayudarán a estrechar el problema (esto le permite mirar el registrador más adelante cuando ya no esté molesto, y tal vez encuentre consejos útiles: P)
  • pregunte a mis colegas superiores por sugerencias
  • llame al cliente para tener una idea clara de cuándo ocurrió el problema surge
1

Por lo general, termino en ese estado de ánimo cuando no tomé un enfoque estructural desde el principio. Al reducir de forma iterativa el área donde puede vivir el problema e intentar escribir la base de código más pequeña que puede reproducir el error, aún no he fallado.

0

creo que si llegas a tener ese tipo de problema es el momento de hacer algo de refactorización seria ...

También podría indicar suposiciones falsas. Intenta asumir de manera programática todo lo que estás 'solo' asumiendo. No hay método: las invariantes están rotas de los métodos que están en la pila.

0

Otros han mencionado tomarse un descanso o "dormir en él". Esta técnica se conoce como (entre otras cosas) Incubación. Una vez que aceptas la idea, puedes llevarla más lejos también.

Un aspecto importante para realmente dejar atrás el problema, seguro de que tendrá respuestas más adelante. Lo peligroso de lo contrario, especialmente si se está durmiendo en él, es que te estarás preocupando hasta el último minuto, entonces esto se convierte en un ciclo interminable en el que tu mente queda atrapada de la noche a la mañana. Probablemente terminarás despertando no muy bien descansado habiendo soñado muchos sueños circulares. Haz esto demasiado y es un camino hacia la depresión.

5
  • Cinco minutos de descanso

Absolutamente crítico, para que no aplastar su teclado.

  • explicar el problema en un correo electrónico a su hermana

O su hijo de dos años. Alguien que wouldn't understand a word * a menos que lo haya explicado muy claramente. No es necesario que envíe el correo electrónico, solo necesita estar seguro de que lo entiende del todo. Te sorprenderá saber cuántas veces simplemente repetir el problema de repente te hace ver dónde saliste mal. Esta es una buena manera de descubrir cuáles eran sus suposiciones sobre el problema y cómo podrían no ser necesariamente correctas.

* Ese enlace es a una respuesta excelente de JaredPar en una pregunta de SO diferente.

  • hablar con un colega

Por este punto que ya ha 'enviado por correo electrónico' de la mascota de la familia, para que sepa que es de esperar que haya cubierto todos los aspectos estúpidos, es el momento de hablar a una persona real. Es posible que hayan experimentado algo oscuro en el pasado que les recuerda esta situación, y definitivamente tendrán una perspectiva diferente. Intenta asegurarte de que tienes claro cuál es el problema, no lo que piensas que es . No quieres sesgarlos. Puede y debe hablar sobre lo que han intentado, y explicar por qué cree que el problema está en esa área (probablemente tenga razón) pero no quiere cerrar sus pensamientos a sus sugerencias, incluso si no lo hacen. Parece correcto.

  • mirar el código de nuevo

Por este tiempo, usted debe espera que sea menos violento, y que debe ser armado con nuevas ideas. Comience por volver a verificar el error. Un simple paso, pero me he sentido frustrado durante horas con un error que estaba en nuestro script de prueba y no en nuestro código. Una vez que hayas verificado el error nuevamente, comienza en la parte superior. Verificar TODO. Ponga un punto de interrupción en el último punto en el que esté 100% seguro, y luego avance hasta encontrar que la salida se ha roto nuevamente. Eso es un gran éxito porque ahora tienes un bloque de código con suerte más pequeño para investigar. Luego, si es necesario, invite a un colega a mirar el código de ejecución real.

0

Otra buena opción es rebotar ideas de otros desarrolladores/miembros del equipo. Algunas veces le harán preguntas que no había considerado.

Si trabajas solo, es una buena idea tener algunos desarrolladores compañeros con los que puedas chatear para solucionar problemas con diferentes enfoques. Te sorprenderá cuán a menudo una nueva perspectiva puede ser el avance que necesitas.

0

Trate David Ungars "Metodología de la ducha":

"Si usted sabe qué tipo, escriba Si usted no sabe qué escribir, tomar una ducha y permanecer en la ducha hasta que sepa qué debe escribir. "

Este tipo de convocatoria resume lo que a la mayoría le gusta hacer. Tomar un descanso ! No importa qué tipo de ruptura sea, siempre y cuando no estés pensando en las cosas que estabas haciendo antes del descanso. La distracción en cualquier forma es buena.

¡Salud!

0

Normalmente hago un recorrido en seco por el método/función ofensivo, paso a paso.Y no asuma que el error viene de allí, podría venir de cualquier lugar antes que él.

Utilice un depurador adecuado, no use una serie de printfs.

Cuestiones relacionadas