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

Running the debugger via the Command Palette.

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

Where to place the cursor to create a 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.