Compartir a través de


Iniciar un programa

Los usuarios que quieran depurar un programa pueden presionar F5 para ejecutar el depurador desde el IDE. Esto inicia una serie de eventos que, en última instancia, da lugar a la conexión del IDE a un motor de depuración (DE), que a su vez está conectado o adjunto 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 adjunto desde el mismo IDE, compone 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 del DE no es GUID_NULL, el SDM co-crea el DE y, a continuación, llama a su método LaunchSuspended con el objetivo de 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 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 el puerto explica lo que sucede después de que se inicia un programa y el puerto es notificado.

Adjuntar después de un lanzamiento 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.