Asociación directa a un programa

Los usuarios que quieran depurar programas en un proceso que ya se está ejecutando normalmente deben seguir este proceso:

  1. En el IDE, abra el menú Depurar y seleccione el comando Asociar al proceso....

    Aparece el cuadro de diálogo Asociar al proceso, en el que se enumeran todos los motores de depuración (DE) instalados en la máquina.

  2. Especifique los DE que se van a usar para depurar el proceso seleccionado, elija un proceso y haga clic en el botón Asociar.

    El paquete de depuración inicia una sesión de depuración y le transfiere la lista de DE. A su vez, la sesión de depuración transfiere esta lista, junto con una función de devolución de llamada, al proceso seleccionado y, a continuación, pide al proceso que enumere sus programas en ejecución.

    Mediante programación, en respuesta a la solicitud de usuario, el paquete de depuración instancia el administrador de depuración de sesión (SDM) y le transfiere la lista de DE seleccionados. Junto con la lista, el paquete de depuración transfiere al SDM una interfaz de IDebugEventCallback2. El paquete de depuración transfiere la lista de DE al proceso seleccionado llamando a IDebugProcess2::Attach. A continuación, el SDM llama a IDebugProcess2::EnumPrograms en el puerto para enumerar los programas que se ejecutan en el proceso.

    A partir de este punto, cada motor de depuración se asocia a un programa exactamente como se detalla en Asociación tras el inicio, con dos excepciones.

    Para mejorar la eficacia, los DE que se implementan para compartir un espacio de direcciones con el SDM se agrupan para que cada DE tenga un conjunto de programas al que se asociará. En este caso, IDebugProcess2 llama a IDebugEngine2::Attach y le transfiere una matriz de programas a los que asociar.

    La segunda excepción es que los eventos de inicio enviados por un DE asociado a un programa que ya se está ejecutando no suelen incluir el evento de punto de entrada.