Adjuntar después de un lanzamientoAttach after a launch

Una vez que inicia un programa, la sesión de depuración está lista para asociar el motor de depuración (DE) a dicho programa.After a program launches, the debug session is ready to attach the debug engine (DE) to said program.

Decisiones de diseñoDesign decisions

Puesto que la comunicación es más fácil dentro de un espacio de direcciones compartido, debe elegir entre dos enfoques de diseño: establecer la comunicación entre la sesión de depuración y la DE.Because communication is easier within a shared address space, you must choose between two design approaches: set communication between the debug session and the DE. O bien, establezca la comunicación entre el programa y la DE.Or, set communication between the DE and the program. Elija entre lo siguiente:Choose between the following:

  • Si tiene más sentido para configurar la comunicación entre la sesión de depuración y la DE, la sesión de depuración participa en la DE la creación y solicita la DE asociar al programa.If it makes more sense to set up the communication between the debug session and the DE, the debug session co-creates the DE and asks the DE to attach to the program. Este diseño deja la sesión de depuración y DE juntos en un espacio de direcciones y el entorno de tiempo de ejecución y el programa juntos en otro.This design leaves the debug session and DE together in one address space, and the run-time environment and program together in another.

  • Si tiene más sentido para configurar la comunicación entre el programa y la DE, el entorno de tiempo de ejecución crea conjuntamente la DE.If it makes more sense to set up the communication between the DE and the program, the run-time environment co-creates the DE. Este diseño deja el SDM en un espacio de direcciones y el DE, el entorno de tiempo de ejecución y el programa juntos en otro.This design leaves the SDM in one address space and the DE, run-time environment, and program together in another. Este diseño es típico de una DE que se implementa con un intérprete para ejecutarse con secuencias de comandos de idiomas.This design is typical of a DE that is implemented with an interpreter to run scripted languages.

    Note

    Cómo la DE se une al programa es depende de la implementación.How the DE attaches to the program is implementation-dependent. Comunicación entre el programa y la DE es también depende de la implementación.Communication between the DE and the program is also implementation-dependent.

ImplementaciónImplementation

Mediante programación, cuando el Administrador de depuración de la sesión (SDM) recibe por primera vez el IDebugProgram2 objeto que representa el programa se inicie, llama a la adjuntar método y pásele un IDebugEventCallback2 objeto, que es una versión posterior se usa para pasar los eventos de depuración hasta el SDM.Programmatically, when the session debug manager (SDM) first receives the IDebugProgram2 object that represents the program to be launched, it calls the Attach method, passing it an IDebugEventCallback2 object, which is later used to pass debug events back to the SDM. El IDebugProgram2::Attach método, a continuación, llama a la OnAttach método.The IDebugProgram2::Attach method then calls the OnAttach method. Para obtener más información sobre cómo el SDM recibe el IDebugProgram2 interfaz, vea notificación del puerto.For more information on how the SDM receives the IDebugProgram2 interface, see Notifying the port.

Si debe ejecutarse en el mismo espacio de direcciones que el programa de la DE depuración: dado que la DE suele ser parte de un intérprete que se está ejecutando un script, el IDebugProgramNodeAttach2::OnAttach devuelve del método S_FALSE.If your DE needs to run in the same address space as the program you're debugging: because the DE is typically part of an interpreter that's running a script, the IDebugProgramNodeAttach2::OnAttach method returns S_FALSE. El S_FALSE retorno indica que finalizado el proceso de conexión.The S_FALSE return indicates that it completed the attach process.

Si, sin embargo, la DE se ejecuta en el espacio de direcciones del SDM: el IDebugProgramNodeAttach2::OnAttach devuelve del método S_OK, o el IDebugProgramNodeAttach2 interfaz no está implementada en absoluto en el IDebugProgramNode2 objeto asociado con el programa se está depurando.If, however, the DE runs in the address space of the SDM: the IDebugProgramNodeAttach2::OnAttach method returns S_OK, or the IDebugProgramNodeAttach2 interface isn't implemented at all on the IDebugProgramNode2 object associated with the program you're debugging. En este caso, el adjuntar finalmente se llama el método para completar la operación de adjuntar.In this case, the Attach method is eventually called to complete the attach operation.

En el último caso, se debe llamar a la GetProgramId método en el IDebugProgram2 objeto que se pasó a la IDebugEngine2::Attach método, la tienda la GUID en el sistema local de objetos y devolver este GUID cuando el IDebugProgram2::GetProgramId se llama al método en este objeto.In the latter case, you must call the GetProgramId method on the IDebugProgram2 object that was passed to the IDebugEngine2::Attach method, store the GUID in the local program object, and return this GUID when the IDebugProgram2::GetProgramId method is subsequently called on this object. El GUID se usa para identificar de forma única el programa a través de los distintos componentes de depuración.The GUID is used to identify the program uniquely across the various debug components.

En el caso de los IDebugProgramNodeAttach2::OnAttach método que devuelve S_FALSE, el GUID que se usará para el programa se pasa a ese método y es el IDebugProgramNodeAttach2::OnAttach método que establece el GUID en el objeto de sistema local.In the case of the IDebugProgramNodeAttach2::OnAttach method returning S_FALSE, the GUID to use for the program is passed to that method and it's the IDebugProgramNodeAttach2::OnAttach method that sets the GUID on the local program object.

La DE está ahora conectada al programa y está listo para enviar los eventos de inicio.The DE is now attached to the program and ready to send any startup events.

Vea tambiénSee also