Depuración

Roblox Studio ofrece muchas herramientas de depuración que se encuentran comúnmente en los entornos de desarrollo integrado (IDE). El depurador es una herramienta que te ayuda a inspeccionar tus scripts, línea por línea, mientras se ejecutan. Muestra los datos en las ventanas de Inspeccionar, Pila de llamadas, Puntos de interrupción y Salida para que los inspecciones.

Depurador en Studio

Para desactivar y reactivar el depurador, abre el menú Configuración de Studio, activa la configuración de Depurador activado y, a continuación, reinicia Studio.

Habilitar el depurador en la configuración de Studio

Flujo de trabajo general

Si notas un problema en tu experiencia o quieres verificar que funciona como lo deseas, puedes depurar el código relacionado con él de la siguiente manera:

  1. Inserta puntos de interrupción en las líneas de códigos que deseas examinar.

  2. En la pestaña Script, haz clic en Reproducir, o Ejecutar, en la pestaña de prueba, para iniciar una sesión de prueba de depuración.

    Opciones de prueba del juego en la pestaña Script
  3. Cuando un script llega a un punto de interrupción, la sesión de la prueba del juego se pone en pausa. Ejecuta el código una línea a la vez. Inspecciona las ventanas de Inspeccionar, Pila de llamadas y Salida para ayudarte a diagnosticar y comprender el problema.

  4. Inserta puntos de interrupción adicionales en las líneas de código que aún no se han ejecutado, para inspeccionar datos adicionales. Desactiva o elimina los puntos de interrupción que ya no necesitas.

  5. En la pestaña Script, haz clic en Detener para finalizar la sesión de depuración.

    La pestaña de Script muestra los botones de prueba y parada

Repite los pasos anteriores hasta que resuelvas el problema o encuentres su causa raíz. A medida que aprendes el flujo de trabajo general, puedes configurar los puntos de interrupción a interrumpir solo si se cumplen ciertas condiciones, para imprimir un mensaje en la ventana de Salida y para ejecutarlos únicamente en el cliente o el servidor. Para obtener más información, consulta Configuraciones de puntos de interrupción.

Insertar puntos de interrupción

Los puntos de interrupción son puntos de control que pausan o "interrumpen" la ejecución de tus scripts en líneas específicas. Puedes usar las pausas para inspeccionar y depurar tu experiencia, inspeccionar las variables e inspeccionar la pila de llamadas. Los puntos de interrupción son una de las formas más efectivas de depurar funciones, por lo que son una de las herramientas de depuración más importantes. Puedes insertar un punto de interrupción en cualquier línea de código ejecutable.

Para insertar un punto de interrupción estándar en una línea de código, haz clic izquierdo en el margen que se encuentra a la derecha del número de línea. También puedes hacer clic con el botón derecho en el margen y hacer clic en Insertar punto de interrupción. El punto de interrupción aparece como un punto rojo. Para desactivarlo, haz clic en el punto.

El punto de interrupción en el medianil es un punto rojo

Ejecutar el código una línea a la vez

Si insertas un punto de interrupción en una línea de un script, el script se pausa antes de ejecutar esa línea. Una flecha amarilla, llamada "depurador", indica cuál es la línea de código que se ejecutará a continuación.

El punto de interrupción activo en el depurador muestra una flecha amarilla

Cuando el script se pausa, ejecuta el siguiente código, una línea a la vez, pasando por cada uno con los botones en la pestaña Script. Los botones también aparecen en la esquina superior izquierda de la ventana de la Pila de llamadas. Mientras avanzas por el código, monitorea cómo tu experiencia cambia conforme se ejecuta la línea actual.

Pestaña de Script centrada en la sección de Depurador

La siguiente tabla resume las tres formas de avanzar por el código. Para continuar ejecutando tu código después de llegar a un punto de interrupción, haz clic en Reanudar, en la pestaña Script.

BotónAcciónAtajoDescripción
Botón para depurar paso a paso una línea de código por instruccionesDepurar paso a paso por instruccionesF11El botón de Depurar paso a paso por instrucciones mueve el depurador al código de la función en la línea actual. Si no hay ninguna función en la línea actual, el depurador se mueve a la siguiente línea.
Botón para depurar paso a paso una línea de código por procedimientosDepurar paso a paso por procedimientosF10El botón de Depurar paso a paso por procedimientos mueve el depurador a la siguiente línea de código, no a las funciones.
Botón para salir de la depuración de una línea de códigoSalir de la depuraciónShift + F11El botón Salir de la depuración retira el depurador de la función actual y lo mueve a la siguiente línea de código después de la llamada de función. Si la línea actual no está dentro de una función, el depurador se mueve a la siguiente línea.

Inspeccionar el código

Cuando un punto de interrupción pausa la experiencia durante una prueba del juego, puedes inspeccionar la ventana de Inspeccionar, la de Pila de llamadas y la de Salida, al igual que el Editor de scripts, para encontrar información sobre los valores de las variables y las ejecuciones de las funciones. Con esta información, puedes encontrar la causa raíz del problema en tu experiencia.

En la ventana de Inspeccionar

La ventana de Inspeccionar tiene dos pestañas: Variables y Mis inspecciones. La pestaña Variables muestra información sobre las variables actuales bajo el alcance, y la pestaña Mis Inspecciones muestra el valor de las variables o expresiones que defines. Ambas pestañas muestran información antes de que la línea se ejecute.

La pestaña Variables tiene las siguientes columnas:

  • Nombre: el nombre declarado de la variable
  • Alcance: el alcance de la variable, dónde se puede "ver" y acceder a ella, como Local, Global o Local externa en el interior de la función ("Upvalue")
  • Valor: el valor actual de la variable
  • Tipo de datos: el tipo de datos de la variable

La pestaña **Mis inspecciones **contiene las siguientes columnas:

  • Expresión: la expresión que deseas inspeccionar
  • Valor: el valor actual de la variable de la expresión
  • Tipo de datos: el tipo de datos de la expresión

En la pestaña Variables, puedes filtrar el alcance de las variables al hacer clic en el icono de filtro. También puedes ordenar las filas al hacer clic en el nombre de la columna por la que se desea ordenar. La ventana de Inspeccionar proporciona vistas de las tablas, tanto expandidas como contraídas.

Ventana de Inspeccionar con valores variables

Para inspeccionar código en la ventana de Inspeccionar:

  1. Si la ventana Inspeccionar no está abierta, haz clic en Inspeccionar desde la pestaña Ver.

  2. Cuando tu sesión de prueba del juego se pause en un punto de interrupción, piensa en cómo inspeccionarías la línea actual para cambiar los valores de las variables en ese script.

  3. Mientras avanzas por el código, inspecciona cómo cambia el valor de las variables desde la pestaña Variables. Si deseas inspeccionar una expresión que no esté en la pestaña Variables, abre la pestaña Mis inspecciones. Haz clic en una fila vacía en la columna Expresión y, a continuación, escribe la expresión en ella. Si deseas inspeccionar una variable en el Editor de scripts, haz doble clic en el nombre de la variable y haz clic derecho y, a continuación, haz clic en Añadir inspección.

  4. Compara los valores de las variables y las expresiones de lo que esperas y lo que ves en la ventana Inspeccionar. Si hay una diferencia entre la forma en que esperas que cambien las variables y la forma en que realmente cambian, entonces las variables o las funciones que interactúan con ellas pueden estar causando problemas o errores.

En la ventana de la Pila de llamadas

La ventana de la Pila de llamadas muestra qué línea de código se ejecutará a continuación, cuando el depurador alcance un punto de interrupción. La Pila de llamadas indica desde qué línea llamas a una función y, si llamas a la función en otras funciones, el orden de las llamadas a la función y desde cuáles líneas llamas a las otras funciones. La función superior de la Pila de llamadas es la última que se llamó y la primera en ser ejecutada. Puedes usar la Pila de llamadas para verificar si el orden de las llamadas de función en tus scripts coincide con tu modelo mental de las llamadas de función.

Pila de llamadas en Studio

Si tienes varios puntos de interrupción en diferentes scripts, puede que pausen la sesión de prueba del juego simultáneamente. Puedes saltar a los puntos de interrupción al hacer clic en la flecha junto al nombre del script en la ventana Pila de llamadas. Si haces clic en Reanudar, te saltas todos los puntos de interrupción que se detuvieron al mismo tiempo.

Pila de llamadas con múltiples puntos de interrupción

Para inspeccionar código en la ventana Pila de llamadas durante una sesión de depuración:

  1. Si la ventana Pila de llamadas no está abierta, haz clic en Pila de llamadas, en la pestaña Ver.

  2. Cuando tu experiencia se pausa en un punto de interrupción, piensa en cómo esperas que el orden de las llamadas de función esté en ese script.

    Editor de scripts con dos funciones y un punto de interrupción
  3. La Pila de llamadas muestra el orden de las llamadas de función. Si el punto de interrupción está dentro de una función, la Pila de llamadas muestra cuál función llama a esa función, si corresponde. La Pila de llamadas también muestra el nombre y el número de línea de cada función. Haz clic en la fila de una función para saltar a ella.

    Haz clic en Pila de llamadas para saltar a la línea.
  4. Compara el orden de las llamadas de función que pensaste en el paso 2 y el orden real del paso 3. Si hay alguna diferencia, entonces hay una diferencia entre la forma en que esperas que el código se comporte y la forma en que realmente se comporta, lo que causa posibles problemas y errores.

En la ventana de Salida

La ventana Salida, a la que se puede acceder desde la pestaña Ver, muestra los errores capturados de los scripts en ejecución, los mensajes de Roblox Engine, los mensajes de registro de los puntos de registro, los mensajes de las llamadas a print() y los errores de las llamadas a warn(). Para obtener más información sobre la ventana de Salida y cómo personalizarla, consulta Salida.

En el Editor de scripts

El Depurador está integrado con el Editor de scripts. Cuando tu experiencia se pausa en un punto de interrupción en un script, puedes pasar el ratón sobre el nombre de una variable para ver su valor. Por ejemplo, puedes ver el valor de una tabla que pasas como argumento en una llamada de función.

Ratón sobre una variable en el Editor de scripts para mostrar valor

Configuraciones de los puntos de interrupción

Puedes configurar los puntos de interrupción para que se interrumpan solo si se cumplen ciertas condiciones, para imprimir un mensaje en la ventana de Salida y para que se ejecuten solo en el cliente o el servidor. También puedes mezclar estas configuraciones para que se adapten mejor a tus necesidades de depuración.

Edición de puntos de interrupción

Puedes editar la configuración de un punto de interrupción en cualquier momento, incluso durante las sesiones de prueba del juego. Si editas los puntos de interrupción durante una sesión de prueba del juego, las ediciones persisten incluso después de que la termines. También puedes editar un punto de interrupción que está pausando activamente tu sesión de prueba del juego, pero los cambios no se aplican, sino hasta la siguiente sesión de prueba del juego.

Para editar la configuración de un punto de interrupción:

  1. Haz clic derecho en el punto de interrupción y, a continuación, haz clic en Editar punto de interrupción.

    Clic derecho para editar un punto de interrupción en Studio
  2. En la ventana Editar punto de interrupción, configura el punto de interrupción como desees.

    Ventana de Editar punto de interrupción en Studio

Condición, Mensaje de registro y Opciones

Para cada punto de interrupción, puedes establecer su Condición, Mensaje de registro, Continuar ejecución y Contexto.

La Condición es la expresión que determina si el punto de interrupción se activa. La Condición es opcional. Si la Condición está vacía, el punto de interrupción siempre se activa. Si la Condición existe, el punto de interrupción solo se activa si la condición es verdadera. Por ejemplo, si deseas que el punto de interrupción solo se active si la variable n es igual a 42, establece la Condición como n == 42. Las condiciones son útiles para depurar cómo se ejecutan las funciones cuando ciertas variables tienen ciertos valores o si deseas interrumpir solo en ciertas ejecuciones en un bucle.

El Mensaje de registro es la expresión que se imprime en la ventana de Salida cuando la condición es verdadera. El formato del Mensaje de registro es el mismo que el argumento para una declaración de print(). Por ejemplo, establece el Mensaje de registro como "The value of n:", n para imprimir el mismo mensaje que print("The value of n:", n). Puedes añadir y eliminar Mensajes de registro sin tener que detener la ejecución, a diferencia de las declaraciones de impresión.

La opción Continuar ejecución determina si el punto de interrupción pausa el script si se activa. Es útil si deseas registrar valores de las variables o expresiones sin detener la ejecución. Esta opción está deshabilitada de forma predeterminada.

El Contexto de un punto de interrupción determina si el punto de interrupción debe activarse en el Cliente, el Servidor o la Edición. Si el contexto es Cliente, el punto de interrupción se activa en los scripts del lado del cliente. Si el contexto es Servidor, el punto de interrupción se activa en los scripts del lado del servidor. Si el contexto es Editar, el punto de interrupción se activa cuando depuras los complementos. Si haces clic en Contexto personalizado, la ventana indica el contexto actual.

La ventana de Editar punto de interrupción muestra el contexto personalizado

Puntos de interrupción condicionales y puntos de registro

Studio ofrece variaciones con nombre de los puntos de interrupción para hacer que la inserción de puntos de interrupción sea más rápida. Para insertar una variación con nombre, haz clic derecho en el margen a la derecha de su número de línea y, a continuación, haz clic en la variante que deseas insertar.

Clic derecho para insertar un punto de interrupción

Un Punto de interrupción condicional es un punto de interrupción con una Condición y Ejecución continua deshabilitadas. Los puntos de interrupción condicionales pausan tu script solo si una condición es verdadera, por lo que son útiles para depurar cómo se ejecutan las funciones cuando ciertas variables tienen ciertos valores. Los puntos de interrupción condicionales usan los valores de las variables antes de que la línea se ejecute. Cuando insertas un Punto de interrupción condicional, tu cursor se centra en la opción Condición para que lo establezcas rápidamente.

Un Punto de registro es un punto de interrupción con un Mensaje de registro y Ejecución continua habilitados. Los Puntos de registro registran mensajes en la ventana Salida sin pausar tus scripts, por lo que son útiles para depurar los valores de las variables. Los Puntos de registro usan los valores de las variables antes de que la línea se ejecute. Cuando insertas un Punto de registro, tu cursor se centra en el Mensaje de registro para que lo establezcas rápidamente.

Los Puntos de registro a menudo son más eficientes para depurar variables que las declaraciones de print() porque te permiten registrar mensajes en la ventana Salida sin tener que detener o reiniciar la sesión de prueba del juego activa. En comparación con las declaraciones de print(), mantienen tu código limpio mientras se depuran y son más fáciles de eliminar después de que terminas de depurar.

Desactivar los puntos de interrupción

Hay muchas formas de desactivar y reactivar un punto de interrupción:

  • Haz clic en el icono del punto de interrupción.
  • Edita el punto de interrupción y alterna su casilla de verificación a Activado.
  • Haz clic derecho en el icono de punto de interrupción y haz clic en Desactivar Punto de interrupción o Habilitar Punto de interrupción.

Eliminar puntos de interrupción

Para eliminar un punto de interrupción, haz clic del medio en su icono. También puedes hacer clic derecho en su icono y hacer clic en Eliminar punto de interrupción.

Ventana de Puntos de interrupción

La ventana Puntos de interrupción muestra todos los puntos de interrupción en tu experiencia. Para abrir la ventana Puntos de interrupción, haz clic en la pestaña Ver, en la parte superior de Studio y, a continuación, haz clic en Puntos de interrupción.

Ventana de Puntos de interrupción en Studio

La ventana Puntos de interrupción tiene las siguientes columnas: sin etiquetar, Script, Línea, Línea de origen, Condición, Mensaje de registro y Continuar ejecución. Las columnas sin etiquetar, Script y Línea siempre se muestran, pero puedes alternar las otras columnas al hacer clic en los tres puntos en la esquina superior derecha de la ventana.

En la columna sin etiquetar, la etiqueta (x3) indica la cantidad de puntos de interrupción en la misma línea de código, y el icono indica la configuración de puntos de interrupción. Los puntos de interrupción en la misma línea comparten la misma Condición, Mensaje de registro y Continuar ejecución, pero varían en el contexto. Puedes editar la configuración de un punto de interrupción en la ventana Puntos de interrupción. Por ejemplo, puedes editar la Condición de un punto de interrupción al editar el área de texto en la columna Condición.

Editar la condición de un Punto de interrupción en la ventana Puntos de interrupción

Puedes activar y desactivar los puntos de interrupción al hacer clic en su icono de punto de interrupción en la columna Habilitado. También puedes hacer clic en los siguientes botones para activar, desactivar y eliminar algunos o todos los puntos de interrupción.

BotónAcción
Botón para desactivar todos los puntos de interrupciónDesactiva todos los puntos de interrupción. Si cualquier punto de interrupción está deshabilitado, actívalos todos.
Botón para eliminar todos los puntos de interrupciónElimina todos los puntos de interrupción.

Iconos de puntos de interrupción

El icono de un punto de interrupción depende de si está habilitado, tiene una condición y tiene un mensaje de registro. Si un punto de interrupción tiene un mensaje de registro, aparece como punto de registro, independientemente de si tiene una condición.

NombreIconoHabilitadoCondiciónMensaje de registro
Punto de interrupciónNoNo
NoNoNo
Punto de interrupción condicionalNo
NoNo
Punto de registroTal vez
NoTal vez

Herramientas de depuración adicionales

Además del depurador, Studio ofrece herramientas de depuración adicionales para que corrijas problemas y errores en tu experiencia.

Barra de comandos

La Barra de comandos te permite ejecutar comandos de Luau mientras se ejecuta la experiencia. Está disponible en Studio, en la pestaña Ver, y en la Consola de desarrolladores.

Consola de desarrolladores

La Consola de desarrolladores proporciona una amplia gama de detalles, incluida la salida de clientes y servidores, el uso de memoria, el rendimiento de la red y más. Para abrir la Consola de desarrolladores mientras pruebas o juegas una experiencia, escribe /console en el chat o presiona F9. Para obtener más información, consulta Consola de desarrolladores.

Archivos de registro

Cuando se imprime un script o hay errores en Studio o en la app del Reproductor, la app guarda el mensaje en un archivo de registro en el sistema de archivos local. Estos archivos se encuentran en diferentes lugares según el sistema operativo:

  • En Windows, los registros están en el directorio %LOCALAPPDATA%\Roblox\logs. Ordena la carpeta por fecha de modificación. Los nombres de los archivos de registro comienzan con el formato log_XXXXX. Los registros con el mismo valor XXXXX provienen de la misma sesión de Studio.
  • En macOS, los registros están en el directorio ~/Library/Logs/Roblox. En el Buscador, haz clic en el menú Ir, selecciona Ir a Carpeta, escribe ese directorio y confirma.