Iniciar un programa

Los usuarios que quieran depurar un programa pueden presionar F5 para ejecutar el depurador desde el IDE. Esto comienza una serie de eventos que, en última instancia, dan lugar a la conexión del IDE a un motor de depuración (DE), que a su vez está conectado o conectado, al programa de la siguiente manera:

  1. El IDE llama primero al paquete de proyecto para obtener la configuración de depuración activa del proyecto de la solución. La configuración incluye el directorio inicial, las variables de entorno, el puerto en el que se ejecutará el programa y el DE que se usará para crear el programa, si se especifica. Esta configuración se pasa al paquete de depuración.

  2. Si se especifica un DE, el DE llama al sistema operativo para iniciar el programa. Como consecuencia del inicio del programa, se carga el entorno en tiempo de ejecución del programa. Por ejemplo, si un programa está escrito en MSIL, se invocará Common Language Runtime para ejecutar el programa.

    o bien

    Si no se especifica un DE, el puerto llama al sistema operativo para iniciar el programa, lo que hace que el entorno en tiempo de ejecución del programa se cargue.

    Nota:

    Si se usa un DE para iniciar un programa, es probable que el mismo DE se adjunte al programa.

  3. Dependiendo de si el DE o el puerto inició el programa, el DE o el entorno en tiempo de ejecución, entonces crea una descripción del programa, o nodo, y notifica el puerto que el programa está en ejecución.

    Nota:

    Se recomienda que el entorno en tiempo de ejecución cree el nodo de programa, ya que el nodo de programa es una representación ligera de un programa que se puede depurar. No es necesario cargar un DE completo solo para crear y registrar un nodo de programa. Si el DE está diseñado para ejecutarse en el proceso del IDE, pero no hay ningún IDE en ejecución, debe haber un componente que pueda agregar un nodo de programa al puerto.

    El programa recién creado, junto con cualquier otro programa, relacionado o no relacionado, iniciado o asociado desde el mismo IDE, redacte una sesión de depuración.

    Mediante programación, cuando el usuario presiona F5 por primera vez, el paquete de depuración de Visual Studio llama al paquete de proyecto (que está asociado al tipo de programa que se está iniciando) a través del DebugLaunch método , que a su vez rellena una VsDebugTargetInfo2 estructura con la configuración de depuración activa del proyecto de la solución. Esta estructura se devuelve al paquete de depuración a través de una llamada al LaunchDebugTargets2 método . A continuación, el paquete de depuración crea una instancia del administrador de depuración de sesión (SDM), que inicia el programa que se está depurando y los motores de depuración asociados.

    Uno de los argumentos que se pasan al SDM es el GUID del DE que se usará para iniciar el programa.

    Si el GUID de DE no GUID_NULLes , el SDM crea el DE y, a continuación, llama a su método LaunchSuspended para iniciar el programa. Por ejemplo, si un programa está escrito en código nativo, IDebugEngineLaunch2::LaunchSuspended probablemente llamará a CreateProcess y ResumeThread (funciones Win32) para ejecutar el programa.

    Como consecuencia del inicio del programa, se carga el entorno en tiempo de ejecución del programa. A continuación, el entorno DE o el entorno en tiempo de ejecución crea una interfaz IDebugProgramNode2 para describir el programa y pasa esta interfaz a AddProgramNode para notificar al puerto que se está ejecutando el programa.

    Si GUID_NULL se pasa, el puerto inicia el programa. Una vez que se ejecuta el programa, el entorno en tiempo de ejecución crea una IDebugProgramNode2 interfaz para describir el programa y lo pasa a IDebugPortNotify2::AddProgramNode. Esto notifica al puerto que se está ejecutando el programa. A continuación, el SDM asocia el motor de depuración al programa en ejecución.

En esta sección

Notificar al puerto Explica lo que sucede después de iniciar un programa y se notifica al puerto.

Adjuntar después de iniciar documentos cuando la sesión de depuración está lista para adjuntar el DE al programa.

  • Las tareas de depuración contienen vínculos a varias tareas de depuración, como iniciar un programa y evaluar expresiones.