Tutorial: Información sobre cómo depurar código de C# con Visual StudioTutorial: Learn to debug C# code using Visual Studio

En este artículo se describen las características del depurador de Visual Studio en un tutorial paso a paso.This article introduces the features of the Visual Studio debugger in a step-by-step walkthrough. Si quiere ahondar en las características del depurador, vea Primer vistazo al depurador.If you want a higher-level view of the debugger features, see First look at the debugger. Normalmente, depurar una aplicación significa ejecutar la aplicación con el depurador activado.When you debug your app, it usually means that you are running your application with the debugger attached. Al hacerlo, el depurador ofrece muchas formas de ver lo que hace el código durante la ejecución.When you do this, the debugger provides many ways to see what your code is doing while it runs. Esto permite revisar el código y fijarse en los valores almacenados en variables, establecer inspecciones en ellas para ver cuándo cambian los valores, examinar la ruta de ejecución del código, ver si una rama de código está en funcionamiento, etc.You can step through your code and look at the values stored in variables, you can set watches on variables to see when values change, you can examine the execution path of your code, see whether a branch of code is running, and so on. Si esta es la primera vez que intenta depurar código, le recomendamos que lea Depuración para principiantes sin experiencia antes de continuar con este artículo.If this is the first time that you've tried to debug code, you may want to read Debugging for absolute beginners before going through this article.

Aunque la aplicación de demostración está en C#, la mayoría de las características son aplicables a C++, Visual Basic, F#, Python, JavaScript y otros lenguajes compatibles con Visual Studio (F# no admite Editar y continuar, mientras queAlthough the demo app is C#, most of the features are applicable to C++, Visual Basic, F#, Python, JavaScript, and other languages supported by Visual Studio (F# does not support Edit-and-continue. F# y JavaScript no admiten la ventana Automático).F# and JavaScript do not support the Autos window). Las capturas de pantalla son de código C#.The screenshots are in C#.

En este tutorial va a:In this tutorial, you will:

  • Iniciar el depurador y llegar a puntos de interrupciónStart the debugger and hit breakpoints.
  • Conocer los comandos para analizar el código en el depuradorLearn commands to step through code in the debugger
  • Inspeccionar variables en la información sobre datos y las ventanas del depuradorInspect variables in data tips and debugger windows
  • Examinar la pila de llamadasExamine the call stack

Requisitos previosPrerequisites

Debe tener instalados Visual Studio 2019 y la carga de trabajo Desarrollo de escritorio de .NET.You must have Visual Studio 2019 installed and the .NET desktop development workload.

Debe tener instalados Visual Studio 2017 y la carga de trabajo Desarrollo de escritorio de .NET.You must have Visual Studio 2017 installed and the .NET desktop development workload.

Si todavía no ha instalado Visual Studio, vaya a la página de descargas de Visual Studio para instalarlo de forma gratuita.If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

Si todavía no ha instalado Visual Studio, vaya a la página de descargas de Visual Studio para instalarlo de forma gratuita.If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

Si tiene que instalar la carga de trabajo pero ya tiene Visual Studio, vaya a Herramientas > Obtener herramientas y características… y se abrirá el Instalador de Visual Studio.If you need to install the workload but already have Visual Studio, go to Tools > Get Tools and Features..., which opens the Visual Studio Installer. Se iniciará el Instalador de Visual Studio.The Visual Studio Installer launches. Elija la carga de trabajo Desarrollo de escritorio de .NET y, luego, seleccione Modificar.Choose the .NET desktop development workload, then choose Modify.

Crear un proyectoCreate a project

  1. Abra Visual Studio.Open Visual Studio.

    Presione Esc para cerrar la ventana de inicio.Press Esc to close the start window. Presione Ctrl + Q para abrir el cuadro de búsqueda, escriba consola, elija Plantillas y luego, Create new Console App (.NET Framework) project (Crear proyecto de aplicación de consola [.NET Framework]).Type Ctrl + Q to open the search box, type console, choose Templates, then choose Create new Console App (.NET Framework) project. En el cuadro de diálogo que se abre, escriba un nombre como get-started-debugging y luego elija Crear.In the dialog box that appears, type a name like get-started-debugging, and then choose Create.

    En la barra de menús superior, seleccione Archivo > Nuevo > Proyecto.From the top menu bar, choose File > New > Project. En el panel izquierdo del cuadro de diálogo Nuevo proyecto, en Visual C# , elija Escritorio de Windows y luego, en el panel central, Aplicación de consola (.NET Framework) .In the left pane of the New project dialog box, under Visual C#, choose Windows Desktop, and then in the middle pane choose Console App (.NET Framework). Luego, escriba un nombre como get-started-debugging y haga clic en Aceptar.Then, type a name like get-started-debugging and click OK.

    Si no ve la plantilla de proyecto Aplicación de consola (.NET Framework) , vaya a Herramientas > Obtener herramientas y características… y se abrirá el instalador de Visual Studio.If you don't see the Console App (.NET Framework) project template, go to Tools > Get Tools and Features..., which opens the Visual Studio Installer. Elija la carga de trabajo Desarrollo de escritorio de .NET y, luego, seleccione Modificar.Choose the .NET desktop development workload, then choose Modify.

    Visual Studio crea el proyecto.Visual Studio creates the project.

  2. En Program.cs, reemplace el código siguienteIn Program.cs, replace the following code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace get_started_debugging
    {
        class Program
        {
            static void Main(string[] args)
            {
            }
        }
    }
    

    con este código:with this code:

    using System;
    using System.Collections.Generic;
    
    public class Shape
    {
        // A few example members
        public int X { get; private set; }
        public int Y { get; private set; }
        public int Height { get; set; }
        public int Width { get; set; }
    
        // Virtual method
        public virtual void Draw()
        {
            Console.WriteLine("Performing base class drawing tasks");
        }
    }
    
    class Circle : Shape
    {
        public override void Draw()
        {
            // Code to draw a circle...
            Console.WriteLine("Drawing a circle");
            base.Draw();
        }
    }
    
    class Rectangle : Shape
    {
        public override void Draw()
        {
            // Code to draw a rectangle...
            Console.WriteLine("Drawing a rectangle");
            base.Draw();
        }
    }
    
    class Triangle : Shape
    {
        public override void Draw()
        {
            // Code to draw a triangle...
            Console.WriteLine("Drawing a trangle");
            base.Draw();
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
    
            var shapes = new List<Shape>
            {
                new Rectangle(),
                new Triangle(),
                new Circle()
            };
    
            foreach (var shape in shapes)
            {
                shape.Draw();
            }
    
            // Keep the console open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    
    }
    
    /* Output:
        Drawing a rectangle
        Performing base class drawing tasks
        Drawing a triangle
        Performing base class drawing tasks
        Drawing a circle
        Performing base class drawing tasks
    */
    

Inicio del depuradorStart the debugger!

  1. Presione F5 (Depurar > Iniciar depuración) o el botón Iniciar depuración Iniciar depuración en la barra de herramientas de depuración.Press F5 (Debug > Start Debugging) or the Start Debugging button Start Debugging in the Debug Toolbar.

    Al pulsar F5, la aplicación se inicia con el depurador activado para analizar los procesos. Como de momento no hemos hecho nada especial para examinar el código,F5 starts the app with the debugger attached to the app process, but right now we haven't done anything special to examine the code. la aplicación solo se carga y se muestra la salida de la consola.So the app just loads and you see the console output.

    Drawing a rectangle
    Performing base class drawing tasks
    Drawing a triangle
    Performing base class drawing tasks
    Drawing a circle
    Performing base class drawing tasks
    

    En este tutorial, analizaremos con más profundidad el uso de esta aplicación junto con el depurador y veremos las características del depurador.In this tutorial, we'll take a closer look at this app using the debugger and get a look at the debugger features.

  2. Para detener el depurador, presione el botón de detención rojo Detener depuración.Stop the debugger by pressing the red stop Stop Debugging button.

Establecer un punto de interrupción e iniciar el depuradorSet a breakpoint and start the debugger

  1. En el bucle foreach de la función Main, establezca un punto de interrupción haciendo clic en el margen izquierdo de la línea de código siguiente:In the foreach loop of the Main function, set a breakpoint by clicking the left margin of the following line of code:

    shape.Draw()

    En el lugar en el que establezca el punto de interrupción aparecerá un círculo rojo.A red circle appears where you set the breakpoint.

    Los puntos de interrupción son la característica más básica y esencial para una depuración confiable.Breakpoints are the most basic and essential feature of reliable debugging. Un punto de interrupción indica dónde Visual Studio debe suspender la ejecución de código para poder echar un vistazo a los valores de las variables o al comportamiento de la memoria, o determinar si se está ejecutando o no una bifurcación de código.A breakpoint indicates where Visual Studio should suspend your running code so you can take a look at the values of variables, or the behavior of memory, or whether or not a branch of code is getting run.

  2. Presione F5 o el botón Iniciar depuración Iniciar depuración. La aplicación se iniciará y el depurador se ejecutará en la línea de código en la que haya establecido el punto de interrupción.Press F5 or the Start Debugging button Start Debugging, the app starts, and the debugger runs to the line of code where you set the breakpoint.

    Establecimiento y uso de los puntos de interrupción

    La flecha amarilla representa la instrucción en la que el depurador se ha puesto en pausa, lo cual también suspende la ejecución de la aplicación en el mismo punto (esta instrucción todavía no se ha ejecutado).The yellow arrow represents the statement on which the debugger paused, which also suspends app execution at the same point (this statement has not yet executed).

    Si la aplicación todavía no se está ejecutando, F5 permite iniciar el depurador, que se detendrá en el primer punto de interrupción.If the app is not yet running, F5 starts the debugger and stops at the first breakpoint. En caso contrario, F5 permite continuar ejecutando la aplicación hasta el siguiente punto de interrupción.Otherwise, F5 continues running the app to the next breakpoint.

    Los puntos de interrupción son una característica muy útil en los casos en los que conocemos la línea o la sección de código que queremos examinar con detalle.Breakpoints are a useful feature when you know the line of code or the section of code that you want to examine in detail.

Normalmente, aquí usamos métodos abreviados de teclado porque son una buena forma de ejecutar rápidamente la aplicación en el depurador, pero los comandos equivalentes, como los comandos de menú, se muestran entre paréntesis.Mostly, we use the keyboard shortcuts here, because it's a good way to get fast at executing your app in the debugger (equivalent commands such as menu commands are shown in parentheses).

  1. Mientras esté en pausa en la llamada de método shape.Draw en el método Main, presione F11, o bien elija Depurar > Depurar paso a paso por instrucciones, para avanzar en el código de la clase Rectangle.While paused in the shape.Draw method call in the Main method, press F11 (or choose Debug > Step Into) to advance into code for the Rectangle class.

    Uso de F11 para depurar código paso a paso por instruccionesUse F11 to Step Into code

    F11 es el comando Depurar paso a paso por instrucciones y permite avanzar la ejecución de la aplicación de instrucción en instrucción.F11 is the Step Into command and advances the app execution one statement at a time. F11 es una buena forma de examinar el flujo de ejecución con más detalle.F11 is a good way to examine the execution flow in the most detail. Más adelante le mostraremos otras opciones para moverse más rápido por el código. De forma predeterminada, el depurador omite el código que no es de usuario (si quiere más detalles, vea Solo mi código).(To move faster through code, we show you some other options also.) By default, the debugger skips over non-user code (if you want more details, see Just My Code).

  2. Presione varias veces F10, o bien elija Depurar > Depurar paso a paso por procedimientos, hasta que el depurador se detenga en la llamada de método base.Draw y, después, vuelva a presionar F10.Press F10 (or choose Debug > Step Over) a few times until the debugger stops on the base.Draw method call, and then press F10 one more time.

    Uso de F10 para saltar códigoUse F10 to Step Over code

    En este caso, tenga en cuenta que el depurador no depura el método Draw de la clase base (Shape) paso a paso por instrucciones.Notice this time that the debugger does not step into the Draw method of the base class (Shape). F10 hace avanzar el depurador sin depurar las funciones o los métodos en el código de la aplicación paso a paso por instrucciones (el código todavía se ejecuta).F10 advances the debugger without stepping into functions or methods in your app code (the code still executes). Al presionar F10 en la llamada de método base.Draw (en vez de F11), se omite el código de implementación de base.Draw (algo que quizás no nos interese en este momento).By pressing F10 on the base.Draw method call (instead of F11), we skipped over the implementation code for base.Draw (which maybe we're not interested in right now).

  1. En el editor de código, desplácese hacia abajo y mantenga el puntero sobre el método Console.WriteLine de la clase Triangle hasta que aparezca el botón verde Ejecutar hasta clic Ejecutar hasta clic a la izquierda.In the code editor, scroll down and hover over the Console.WriteLine method in the Triangle class until the green Run to Click button Run to Click appears on the left. La información sobre herramientas del botón muestra "Ejecutar hasta aquí".The tooltip for the button shows "Run execution to here".

    Uso de la característica Ejecutar hasta clicUse the Run to Click feature

    Note

    El botón Ejecutar hasta clic es una novedad de Visual Studio 2017Visual Studio 2017.The Run to Click button is new in Visual Studio 2017Visual Studio 2017. Si no ve el botón con la flecha verde, use F11 en este ejemplo para hacer avanzar el depurador hasta el lugar correcto.If you don't see the green arrow button, use F11 in this example instead to advance the debugger to the right place.

  2. Haga clic en el botón Ejecutar hasta clic Ejecutar hasta clic.Click the Run to Click button Run to Click.

    Usar este botón es similar a establecer un punto de interrupción temporal.Using this button is similar to setting a temporary breakpoint. La característica Ejecutar hasta clic es útil para desplazarse rápidamente por un área visible del código de la aplicación (puede hacer clic en cualquier archivo abierto).Run to Click is handy for getting around quickly within a visible region of app code (you can click in any open file).

    El depurador avanzará hasta la implementación del método Console.WriteLine de la clase Triangle.The debugger advances to the Console.WriteLine method implementation for the Triangle class.

    Imagine que, mientras está en pausa, detecta una falta de ortografía.While paused, you notice a typo! O que el texto "Drawing a trangle" está mal escrito.The output "Drawing a trangle" is misspelled. Pues lo podemos corregir aquí directamente mientras la aplicación se ejecuta en el depurador.We can fix it right here while running the app in the debugger.

Editar código y seguir depurandoEdit code and continue debugging

  1. Haga clic en "Drawing a trangle" y corrija el texto: cambie "trangle" por "triangle".Click into "Drawing a trangle" and type a correction, changing "trangle" to "triangle".

  2. Presione F11 una vez y el depurador avanzará de nuevo.Press F11 once and you see that the debugger advances again.

    Note

    En función del tipo de código que edite en el depurador, puede ser que vea un mensaje de advertencia.Depending on what type of code you edit in the debugger, you may see a warning message. En algunos escenarios, el código tendrá que volver a compilarse para que pueda continuar.In some scenarios, the code will need to recompile before you can continue.

Salida de la depuraciónStep out

Supongamos que ha terminado de examinar el método Draw de la clase Triangle y quiere salir de la función, pero permanecer en el depurador.Let's say that you are done examining the Draw method in the Triangle class, and you want to get out of the function but stay in the debugger. Puede hacerlo con el comando Salir de la depuración.You can do this using the Step Out command.

  1. Presione Mayús + F11 (o Depurar > Salir de la depuración).Press Shift + F11 (or Debug > Step Out).

    Este comando reanuda la ejecución de la aplicación (y hace avanzar el depurador) hasta que se devuelve la función actual.This command resumes app execution (and advances the debugger) until the current function returns.

    Debería volver a estar en el bucle foreach del método Main.You should be back in the foreach loop in the Main method.

Reiniciar la aplicación rápidamenteRestart your app quickly

Haga clic en el botón Reiniciar Reiniciar aplicación de la barra de herramientas de depuración (Ctrl + Mayús + F5).Click the Restart Restart App button in the Debug Toolbar (Ctrl + Shift + F5).

El botón Reiniciar permite ahorrar tiempo, ya que hace que no sea necesario detener la aplicación y reiniciar el depurador.When you press Restart, it saves time versus stopping the app and restarting the debugger. El depurador se detiene en el primer punto de interrupción que se alcanza al ejecutar el código.The debugger pauses at the first breakpoint that is hit by executing code.

El depurador se detendrá de nuevo en el punto de interrupción que haya establecido en el método shape.Draw().The debugger stops again at the breakpoint you set, on the shape.Draw() method.

Inspeccionar variables con información sobre datosInspect variables with data tips

Las características que le permiten inspeccionar las variables son una de las más útiles del depurador y ofrecen diferentes formas de hacerlo.Features that allow you to inspect variables are one of the most useful features of the debugger, and there are different ways to do it. A menudo, para depurar un problema, debe intentar averiguar si las variables están almacenando los valores que espera que tengan en un momento determinado.Often, when you try to debug an issue, you are attempting to find out whether variables are storing the values that you expect them to have at a particular time.

  1. Mientras esté en pausa en el método shape.Draw(), mantenga el puntero sobre el objeto shape y verá su valor de propiedad predeterminado, la propiedad Rectangle.While paused on the shape.Draw() method, hover over the shape object and you see its default property value, which is the object type Rectangle.

  2. Expanda el objeto shape para consultar las propiedades, como Height, que tiene un valor de 0.Expand the shape object to see its properties, such as the Height property, which has a value of 0.

  3. Presione varias veces F10, o bien elija Depurar > Depurar paso a paso por procedimientos, para recorrer en iteración el bucle foreach una vez y pausarlo en shape.Draw().Press F10 (or Debug > Step Over) a few times to iterate once through the foreach loop, pausing again on shape.Draw().

  4. Vuelva a mantener el mouse sobre el objeto de forma y esta vez verá que tiene un objeto nuevo con un tipo Triangle.Hover over the shape object again, and this time you see that you have a new object with a type Triangle.

    Ver información sobre datosView a data tip

    A menudo, al realizar una depuración, queremos una forma rápida de comprobar los valores de las propiedades de las variables para ver si se almacenan los valores correspondientes, y las sugerencias de datos son una buena forma de verlo.Often, when debugging, you want a quick way to check property values on variables, to see whether they are storing the values that you expect them to store, and the data tips are a good way to do it.

Inspeccionar variables con las ventanas Automático y Variables localesInspect variables with the Autos and Locals windows

  1. Vea la ventana Automático, en la parte inferior del editor de código.Look at the Autos window at the bottom of the code editor.

    Si está cerrada, ábrala mientras está en pausa en el depurador seleccionando Depurar > Ventanas > Automático.If it is closed, open it while paused in the debugger by choosing Debug > Windows > Autos.

  2. Expanda el objeto shapes.Expand the shapes object.

    Inspección de las variables en la ventana AutomáticoInspect variables in the Autos Window

    En la ventana Automático puede ver las variables y su valor actual.In the Autos window, you see variables and their current value. En la ventana Automático se muestran todas las variables que se usan en la línea actual o en la anterior. Para consultar el comportamiento específico de los lenguajes, vea la documentación.The Autos window shows all variables used on the current line or the preceding line (Check documentation for language-specific behavior).

  3. A continuación, examine la ventana Variables locales en una pestaña situada junto a la ventana Automático.Next, look at the Locals window, in a tab next to the Autos window.

    En la ventana Variables locales se muestran las variables que se encuentran en el ámbito actual, es decir, en el contexto de ejecución actual.The Locals window shows you the variables that are in the current scope, that is, the current execution context.

Establecer una inspecciónSet a watch

  1. En la ventana del editor de código principal, haga clic en el objeto shapes y elija Agregar inspección.In the main code editor window, right-click the shapes object and choose Add Watch.

    En la parte inferior del editor de código se abre la ventana Inspección.The Watch window opens at the bottom of the code editor. Puede usar una ventana Inspección para especificar una variable (o una expresión) que quiera supervisar.You can use a Watch window to specify a variable (or an expression) that you want to keep an eye on.

    Habrá establecido una inspección en el objeto shapes y podrá ver cómo cambia su valor conforme avance en el depurador.Now, you have a watch set on the shapes object, and you can see its value change as you move through the debugger. A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que está viendo (y se atenúan cuando están fuera del ámbito).Unlike the other variable windows, the Watch window always shows the variables that you are watching (they're grayed out when out of scope).

Examinar la pila de llamadasExamine the call stack

  1. Mientras esté en pausa en el bucle foreach, haga clic en la ventana Pila de llamadas, que se abrirá de forma predeterminada en el panel inferior derecho.While paused in the foreach loop, click the Call Stack window, which is by default open in the lower right pane.

    Si está cerrada, ábrala mientras está en pausa en el depurador seleccionando Depurar > Ventanas > Pila de llamadas.If it is closed, open it while paused in the debugger by choosing Debug > Windows > Call Stack.

  2. Presione F11 varias veces hasta que vea que el depurador se detenga en el método Base.Draw para la clase Triangle en el editor de código.Click F11 a few times until you see the debugger pause in the Base.Draw method for the Triangle class in the code editor. Eche un vistazo a la ventana Pila de llamadas.Look at the Call Stack window.

    Examinar la pila de llamadasExamine the call stack

    En la ventana Pila de llamadas se muestra el orden en el que se llama a los métodos y las funciones.The Call Stack window shows the order in which methods and functions are getting called. En la línea superior se muestra la función actual (el método Triangle.Draw en esta aplicación).The top line shows the current function (the Triangle.Draw method in this app). En la segunda línea se mostrará que se ha llamado a Triangle.Draw desde el método Main, y así sucesivamente.The second line shows that Triangle.Draw was called from the Main method, and so on.

    Note

    La ventana Pila de llamadas es similar a la perspectiva de depuración de algunos IDE, como Eclipse.The Call Stack window is similar to the Debug perspective in some IDEs like Eclipse.

    La pila de llamadas es una buena forma de examinar y entender el flujo de ejecución de una aplicación.The call stack is a good way to examine and understand the execution flow of an app.

    Puede hacer doble clic en una línea de código para ver ese código fuente. De este modo, también puede cambiar el ámbito que el depurador va a inspeccionar.You can double-click a line of code to go look at that source code and that also changes the current scope being inspected by the debugger. Esta acción no hace avanzar el depurador.This action does not advance the debugger.

    También puede usar los menús contextuales de la ventana Pila de llamadas para hacer otras cosas.You can also use right-click menus from the Call Stack window to do other things. Por ejemplo, puede insertar puntos de interrupción en funciones especificadas, avanzar el depurador mediante Ejecutar hasta el cursor y examinar el código fuente.For example, you can insert breakpoints into specified functions, advance the debugger using Run to Cursor, and go examine source code. Para obtener más información, vea Cómo: Examinar la pila de llamadas.For more information, see How to: Examine the Call Stack.

Cambio del flujo de ejecuciónChange the execution flow

  1. Con el depurador en pausa en la llamada del método Circle.Draw, use el mouse para capturar la flecha amarilla (el puntero de ejecución) a la izquierda y moverla una línea hacia arriba hasta la llamada de método Console.WriteLine.With the debugger paused in the Circle.Draw method call, use the mouse to grab the yellow arrow (the execution pointer) on the left and move the yellow arrow up one line to the Console.WriteLine method call.

  2. Presione F11.Press F11.

    El depurador volverá a ejecutar el método Console.WriteLine, lo cual se puede consultar en la salida de la ventana de la consola.The debugger reruns the Console.WriteLine method (you see this in the console window output).

    Al cambiar el flujo de ejecución, puede, por ejemplo, comprobar las diferentes rutas de ejecución de código o volver a ejecutar código sin tener que reiniciar el depurador.By changing the execution flow, you can do things like test different code execution paths or rerun code without restarting the debugger.

    Warning

    A menudo es necesario tener cuidado con esta característica, ya que puede ser que vea una advertencia en la información en pantalla.Often you need to be careful with this feature, and you see a warning in the tooltip. También puede ser que reciba otras advertencias.You may see other warnings, too. El hecho de mover el puntero no permite revertir la aplicación a un estado anterior.Moving the pointer cannot revert your application to an earlier app state.

  3. Presione F5 para seguir ejecutando la aplicación.Press F5 to continue running the app.

    Enhorabuena por completar este tutorial.Congratulations on completing this tutorial!

Pasos siguientesNext steps

En este tutorial, ha aprendido a iniciar el depurador, a ejecutar el código paso a paso y a inspeccionar variables.In this tutorial, you've learned how to start the debugger, step through code, and inspect variables. Puede ser que le interese analizar las características del depurador con más detenimiento, así como consultar los vínculos disponibles con más información.You may want to get a high-level look at debugger features along with links to more information.