Para encontrar el motivo del problema debes:
1. Centrarte en un caso en particular y poner "breakpoints" para seguir el código paso a paso, armarte de muchísima paciencia, no desesperar, poco a poco, hasta encontrarlo.
2. Una vez resuelto ese problema, goto 1
No hay otra forma de hacerlo, es necesario decidirse y mentalizarse: "Ahora toca resolver estos problemas, no otras cosas, solamente resolver estos problemas."