Los puntos de interrupción son una excelente manera de ver cómo se ejecuta el compilador en su código. Ahora mi pregunta es, ¿existe la posibilidad de usar puntos de interrupción cuando depure su código?
Los puntos de interrupción son una excelente manera de ver cómo se ejecuta el compilador en su código. Ahora mi pregunta es, ¿existe la posibilidad de usar puntos de interrupción cuando depure su código?
Respuestas:
Como se señaló en la respuesta de Majenko, el IDE de Arduino no proporciona un mecanismo de punto de interrupción, pero Atmel Studio admite puntos de interrupción . [*]
Sin embargo, si tiene un interruptor y un LED, puede seguir el progreso de su programa de una manera que proporcione algunos de los beneficios de los puntos de interrupción. Agregaría una subrutina, por ejemplo BPReport()
, que a través de una salida en serie o una pantalla LCD informa los valores de las variables críticas, luego enciende el LED y espera hasta que el interruptor se haya presionado y liberado, con un rebote. Llame a su BPReport()
rutina siempre que desee un punto de interrupción incondicional. Para puntos de interrupción condicionales, puede tener una rutina BPReportIf(cond)
que llama BPReport()
si cond
es verdadero. Si no desea emitir a través de serie, puede usar varios LED o una pantalla LCD, y puede usar varios interruptores si desea controles de interrupción externos (por ejemplo, cond
podría ser una prueba de uno de los interruptores adicionales).
[*] Algunos depuradores de hardware modifican el código descargado cada vez que se agregan, cambian o eliminan puntos de interrupción. Ese uso desgastará la memoria flash más rápidamente que solo descargarla ocasionalmente. Si un chip se ha usado mucho para dicha depuración, no lo use en un sistema de producción.
Aunque Majenko su respuesta es correcta, hay algunas otras opciones.
En cuanto a la depuración de hardware real según lo declarado por majenko, diría:
Otra opción de depuración de una categoría completamente diferente es organizar su código de modo que la lógica de decisión (independiente del hardware) y la acción (dependiente del hardware) estén completamente separadas.
Luego compile su bosquejo como un programa local y depure la "lógica de decisión" en su máquina local. Este método no permite la "depuración de hardware". Este método también permite pruebas unitarias.
Tenga en cuenta que su máquina local es probablemente un 32 o 64 amargo y la mayoría de los Arduino son 8 amargos, lo que dará como resultado diferencias en los tipos de datos, lo que es un punto de atención adicional al usar este método.
La biblioteca Arduino-Debug proporciona un depurador simple en el destino para los bocetos de Arduino. Los comandos de depuración se agregan directamente al boceto. Se inicia un shell de comando del depurador en puntos de quiebre y aserciones.
La captura de pantalla anterior muestra el boceto de ejemplo ejecutado en un Arduino Mega con monitor de salida en serie utilizado por la aplicación y Serial1 utilizado para el shell del depurador.
Comandos de depuración de croquis
Comandos de shell de depuración
Todos los comandos de shell de depuración se pueden abreviar a comandos de un solo carácter. Consulte el archivo README para obtener más detalles; detalles de instalación, ejemplo de boceto y evaluación comparativa.