Depurar un Programa de Robot
Inevitablemente, un programa no se comportará de la manera que esperamos que se comporte. Cuando esto ocurre, es necesario averiguar por qué el programa está haciendo lo que está haciendo, para que podamos hacer que haga lo que queremos que haga, en su lugar. Este comportamiento de programa no deseado se denomina «error», y este proceso se denomina «depuración».
Un depurador es una herramienta que se utiliza para controlar el flujo del programa y monitorear las variables para ayudar a depurar un programa. Esta sección describirá cómo configurar una sesión de depuración para un FRC® programa de robot.
Nota
Para los usuarios principiantes que necesitan depurar sus programas pero no saben/tienen tiempo para aprender a usar un depurador, a menudo es posible depurar un programa simplemente imprimiendo el estado del programa relevante en la consola. Sin embargo, se recomienda encarecidamente que los alumnos finalmente aprendan a usar un depurador.
Ejecución del depurador
Presione Ctrl+Mayús+P y escriba WPILib
o haga clic en el elemento Menú WPILib para abrir la paleta Comandos con WPILib rellenado previamente. Escriba Depurar y seleccione el elemento de menú Depurar código robot para iniciar la depuración. El código se descargará en la roboRIO y comenzará la depuración.
Breakpoints
Un «breakpoint» es una línea de código en la que el depurador detendrá la ejecución del programa para que el usuario pueda examinar el estado del programa. Esto es extremadamente útil durante la depuración, ya que permite al usuario pausar el programa en puntos específicos en código problemático para determinar dónde exactamente el programa se está desviando del comportamiento esperado.
El depurador se detendrá automáticamente en el primer breakpoint que encuentre.
Estableciendo un Breakpoint
Haga doble clic en el margen izquierdo de la ventana del código fuente (a la izquierda del numero de línea) para establecer un breakpoint en el programa: un pequeño círculo rojo indicará que el breakpoint se ha establecido en la línea correspondiente.
Depurar con declaraciones impresas
Otra forma de depurar su programa es usar declaraciones de impresión en su código y verlas usando RioLog en Visual Studio Code o Driver Station. Las declaraciones impresas deben agregarse con cuidado, ya que no son muy eficientes, especialmente cuando se usan en grandes cantidades. Deben eliminarse para la competencia, ya que pueden provocar desbordamientos de bucle.
System.out.print("example");
wpi::outs() << "example\n";
Debugging with NetworkTables
NetworkTables can be used to share robot information with your debugging computer. NetworkTables can be viewed with your favorite Dashboard or OutlineViewer. One advantage of NetworkTables is that tools like Shuffleboard can be used to graphically analyze the data. These same tools can then be used with same data to later provide an operator interface for your drivers.
Aprender más
To learn more about debugging with VS Code see this link.
Some of the features mentioned in this VS Code article will help you understand and diagnose problems with your code. The Quick Fix (yellow light bulb) feature can be very helpful with a variety of problems including what to import.
Una de las mejores maneras para prevenir el tener que depurar tantos problemas es hacer una prueba de la unidad.
Verificar que su robot funcione en Simulation es también una excelente forma de evitar tener que hacer depuraciones complejas en el robot actual.