Opciones para hacer debug de un programa en arduino.

Estoy haciendo un programa para arduino que llegó a un punto de complejidad en el que necesito hacer una depuración (debug) para asegurarme que el manejo de datos esté siendo el correcto.

Quería pedir si en este mensaje podrían contarme experiencias al respecto, para ver cuál será el camino más viable y/o fácil para hacer la depuración.

Yo pensé que tenía resuelto el problema, pues cuando empecé con arduino, antes de tener mi primera tarjeta, probé Proteus, y vi que se puede hacer una simulación y depuración (debug) paso a paso, incluso viendo el valor de todas las variables (una maravilla). Sin embargo, ahora que me disponía a usar esa herramienta, me desilusioné puesto que el Proteus que tengo trabaja con el IDE de Arduino versión 1.0.5 Y el programa que hice compila muy bien en las versiones actuales (1.6.9), pero al tratar de compilar en la versión 1.0.5 da una cantidad enorme errores. Ahora me encuentro en el dilema de buscar otra solución para hacer la depuración, o adaptar todo el programa que hice para que compile bien en la versión 1.0.5 y hacer la depuración con Proteus.

¿Qué herramienta para hacer depuración (debug) usan? ¿Que experiencia tuvieron con esa herramienta?

Gracias de antemano.

A menos que tengas que trabajar a nivel assembler yo uso el monitor serie para ver que esta pasando con alguna rutina.
No hace falta debugger al estilo antiguo.
Me alcanza con entender bien cada proceso, electrónico o de software para poder encontrar la solución a mi error.
Un simple Serial.print(buffer) me resuelve todo.
yo uso siempre

sprintf(buffer, "temp %d hum %d contador %u\n", temp, hum, conta++); //y entonces si el 
Serial.print(buffer);

Dime que problema mas profundo requiere de un conocimiento que esto no te de?

Tuve que editar porque se me olvidó.
No uso Monitor Serie porque no reporta cosas como esta '\n' asi que uso Termite como Terminal RS232 o cualquier otro. Rápido.
Ahora si lo que necesitas es insertar un breakpoint cuando se de determinada instancia eso si te remite a un debugger, pero hasta eso podrias implementarlo en tu arduino aunque no se si facilmente.

Una solución obvia sería que actualices tu licencia proteus.

1 Like

surbyte:
A menos que tengas que trabajar a nivel assembler yo uso el monitor serie para ver que esta pasando con alguna rutina.
No hace falta debugger al estilo antiguo.
Me alcanza con entender bien cada proceso, electrónico o de software para poder encontrar la solución a mi error.
Un simple Serial.print(buffer) me resuelve todo.
yo uso siempre

sprintf(buffer, "temp %d hum %d contador %u\n", temp, hum, conta++); //y entonces si el 

Serial.print(buffer);




Dime que problema mas profundo requiere de un conocimiento que esto no te de?

Estaba considerando esa posibilidad, pero se trata de algo muy arcaico, tanto que creo que no califica como para llamarte una "herramienta de depuración". Sin duda que si no encuentro otra opción, avanzaré de esa manera.

surbyte:
Una solución obvia sería que actualices tu licencia proteus.

Tengo Proteus versión 8.1, y me parece que ya está disponible la 8.5 No conozco detalles sobre con qué versión de Arduino trabaja esa versión de Proteus. Pero bueno, actualizar mi "licencia" de Proteus es algo que está fuera de mis posibilidades, por razones que seguramente algunos sospechan.

Pero más allá de eso, quería saber si alguien trabajó con otras opciones. Por ejemplo, si alguien usó Visual Studio, apreciaría que me cuente cómo funciona el debug. Lo mismo si alguien usó Eclipse o Programino.

Puedes usar el depurador de proteus, pero el IDE es muy básico y para programas largos cansa mucho, la otra opción es usar Visual Micro, el cual tiene un depurador donde puedes crear puntos de interrupción y ejecutar paso a paso todo el codigo, pero esta función está disponible en su versión de pago, y en lo particular no me gusta, ya que, entra en las funciones y no puedes saltarte las lineas que desees.
Por ultimo queda atmel estudio, pero tendras que aprender a programar en C puro, actualmente uso esta alternativa, ya que puedes depurar de forma profesional cualquier código, sin importar lo extenso que este sea. SUERTE!