Inicio de un programa
Los usuarios que quieran depurar un programa pueden presionar F5 para ejecutar el depurador desde el IDE. Esto da comienzo a 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 adjunto al programa de la siguiente manera:
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.
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á al idioma común en tiempo de ejecución 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.
Dependiendo de si fue el DE o el puerto que iniciaron el programa, el DE o el entorno en tiempo de ejecución crean entonces una descripción del programa, o nodo, y notifican al 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, iniciado o asociado desde el mismo IDE, redacta 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 método DebugLaunch, que a su vez rellena una estructura VsDebugTargetInfo2 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 método LaunchDebugTargets2. 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 es
GUID_NULL
, 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á aCreateProcess
yResumeThread
(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 DE o el entorno en tiempo de ejecución crean una interfaz IDebugProgramNode2 para describir el programa y pasa esta interfaz a AddProgramNode para notificar al puerto que se está ejecutando el programa.
Si se pasa
GUID_NULL
, el puerto inicia el programa. Una vez que se ejecuta el programa, el entorno en tiempo de ejecución crea una interfazIDebugProgramNode2
para describir el programa y lo pasa aIDebugPortNotify2::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 notificárselo al puerto.
Adjuntar después de un inicio documenta cuando la sesión de depuración está lista para adjuntar el DE al programa.
Contenido relacionado
- Tareas de depuración contiene vínculos a varias tareas de depuración, como iniciar un programa y evaluar expresiones.