Iniciar un programaLaunch a program

Los usuarios que desean depurar un programa pueden presionar F5 para ejecutar el depurador desde el IDE.Users who want to debug a program can press F5 to run the debugger from the IDE. Esto inicia una serie de eventos producidos en última instancia en el IDE se conecta a un motor de depuración (DE), que a su vez está conectado o adjunta, al programa como se indica a continuación:This begins a series of events that ultimately result in the IDE's connecting to a debug engine (DE), which is in turn connected, or attached, to the program as follows:

  1. El IDE llama primero el paquete del proyecto para obtener la configuración de depuración de proyecto activo de la solución.The IDE first calls the project package to get the solution's active project debug settings. La configuración incluye el directorio de inicio, las variables de entorno, el puerto en que se ejecutará el programa y la DE usar para crear el programa, si se especifica.The settings include the starting directory, the environment variables, the port in which the program will run, and the DE to use to create the program, if specified. Estos valores se pasan en el paquete de depuración.These settings are passed to the debug package.

  2. Si se especifica a DE, el sistema operativo para iniciar el programa llama a la DE.If a DE is specified, the DE calls the operating system to launch the program. Como consecuencia de iniciar el programa, se carga el entorno de tiempo de ejecución del programa.As a consequence of launching the program, the program's run-time environment loads. Por ejemplo, si se escribe un programa en MSIL, se invocará el common language runtime para ejecutar el programa.For example, if a program is written in MSIL, the common language runtime will be invoked to run the program.

    -o bien--or-

    Si no se especifica a DE, el puerto llama el sistema operativo para iniciar el programa, lo que hace que el entorno de tiempo de ejecución del programa cargar.If a DE is not specified, the port calls the operating system to launch the program, which causes the program's run-time environment to load.

    Note

    Si a DE se usa para iniciar un programa, es probable que se adjuntará al mismo DE al programa.If a DE is used to launch a program, it is likely that the same DE will be attached to the program.

  3. Dependiendo de si el puerto o la DE inicia el programa, la DE o el entorno de tiempo de ejecución, a continuación, crea una descripción del programa o el nodo y notifica el puerto que se ejecuta el programa.Depending on whether the DE or the port launched the program, the DE or the run-time environment then creates a program description, or node, and notifies the port that the program is running.

    Note

    Se recomienda que el entorno de tiempo de ejecución crea el nodo de programa, porque el nodo de programa es una representación reducida de un programa que se puede depurar.It is recommended that the run-time environment create the program node, because the program node is a lightweight representation of a program that can be debugged. No hay ninguna necesidad de cargar una completa DE solo para crear y registrar un nodo de programa.There is no need to load up an entire DE just to create and register a program node. Si se ha diseñado la DE para ejecutarse en el proceso del IDE, pero ningún IDE está realmente se está ejecutando, debe haber un componente que se puede agregar un nodo de programa al puerto.If the DE is designed to run in the process of the IDE, but no IDE is actually running, there needs to be a component that can add a program node to the port.

    El programa recién creado, junto con todos los demás programas, relacionados con o no relacionados, inicia o adjuntados para desde el mismo IDE, crear una sesión de depuración.The newly created program, along with any other programs, related or unrelated, launched or attached to from the same IDE, compose a debug session.

    Mediante programación, cuando el usuario primero presiona F5, Programa para la mejoraVisual Studiodel paquete de depuración llama al paquete de proyecto (que está asociado con el tipo de programa que se va a iniciar) a través de la DebugLaunch método, que a su vez se rellena un VsDebugTargetInfo2 estructura con la configuración de depuración del proyecto activo de la solución.Programmatically, when the user first presses F5, Programa para la mejoraVisual Studio's debug package calls the project package (which is associated with the type of program being launched) through the DebugLaunch method, which in turn fills out a VsDebugTargetInfo2 structure with the solution's active project debug settings. Esta estructura se pasa al paquete de depuración mediante una llamada a la LaunchDebugTargets2 método.This structure is passed back to the debug package through a call to the LaunchDebugTargets2 method. El paquete de depuración, a continuación, crea el Administrador de sesión de depuración (SDM), que inicia el programa que se va a motores de depuración depurado y cualquier asociado.The debug package then instantiates the session debug manager (SDM), which launches the program being debugged and any associated debug engines.

    Uno de los argumentos pasados al SDM es el GUID de la DE que se usará para iniciar el programa.One of the arguments passed to the SDM is the GUID of the DE to be used to launch the program.

    Si no lo es el GUID DE GUID_NULL, el SDM participa en la DE la creación y, a continuación, llama a su LaunchSuspended método para iniciar el programa.If the DE GUID is not GUID_NULL, the SDM co-creates the DE, and then calls its LaunchSuspended method to launch the program. Por ejemplo, si un programa, escrito en código nativo, IDebugEngineLaunch2::LaunchSuspended llamará probablemente CreateProcess y ResumeThread (funciones de Win32) para ejecutar el programa.For example, if a program is written in native code, IDebugEngineLaunch2::LaunchSuspended will probably call CreateProcess and ResumeThread (Win32 functions) to run the program.

    Como consecuencia de iniciar el programa, se carga el entorno de tiempo de ejecución del programa.As a consequence of launching the program, the program's run-time environment is loaded. La DE o el entorno de tiempo de ejecución, a continuación, crea un IDebugProgramNode2 para describir el programa de la interfaz y pasa esta interfaz para AddProgramNode para notificar el puerto que el programa es está ejecutando.Either the DE or the run-time environment then creates an IDebugProgramNode2 interface to describe the program and passes this interface to AddProgramNode to notify the port that the program is running.

    Si GUID_NULL se pasa a continuación, el programa inicia el puerto.If GUID_NULL is passed, then the port launches the program. Una vez que se ejecuta el programa, el entorno de tiempo de ejecución crea un IDebugProgramNode2 interfaz para describir el programa y lo pasa a IDebugPortNotify2::AddProgramNode.Once the program is running, the run-time environment creates an IDebugProgramNode2 interface to describe the program and passes it to IDebugPortNotify2::AddProgramNode. Así notifica el puerto que se ejecuta el programa.This notifies the port that the program is running. A continuación, el SDM adjunta el motor de depuración al programa en ejecución.Then the SDM attaches the debug engine to the running program.

En esta secciónIn this section

Notificación del puerto explica lo que sucede después de que se inicia un programa y se notifica el puerto.Notifying the port Explains what happens after a program is launched and the port is notified.

Asociar después de un lanzamiento documentos cuando esté lista para adjuntar la DE que el programa de la sesión de depuración.Attaching after a launch Documents when the debug session is ready to attach the DE to the program.

Tareas de depuración contiene vínculos a diversas tareas de depuración, como iniciar un programa y evaluar expresiones.Debugging tasks Contains links to various debugging tasks, such as launching a program and evaluating expressions.