Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Después de registrar los programas con el puerto adecuado, debe adjuntar el depurador al programa que desea depurar.
Elección de cómo adjuntar
Hay tres maneras en las que el administrador de depuración de sesión (SDM) intenta asociarse al programa que se está depurando.
Para los programas que inicia el motor de depuración a través del método LaunchSuspended (típico de los lenguajes interpretados, por ejemplo), el SDM obtiene la interfaz IDebugProgramNodeAttach2 del objeto IDebugProgramNode2 asociado al programa al que se adjunta. Si el SDM puede obtener la
IDebugProgramNodeAttach2interfaz, el SDM llama al método OnAttach . ElIDebugProgramNodeAttach2::OnAttachmétodo devuelveS_OKpara indicar que no se adjuntó al programa y que se pueden realizar otros intentos para adjuntarlo al programa.Si el SDM puede obtener la interfaz IDebugProgramEx2 del programa al que se está adjuntando, el SDM llama al método Attach . Este enfoque es típico para los programas que el proveedor de puertos inició de forma remota.
Si el programa no se puede adjuntar a través de los
IDebugProgramNodeAttach2::OnAttachmétodos oIDebugProgramEx2::Attach, sdM carga el motor de depuración (si aún no está cargado) llamando a laCoCreateInstancefunción y, a continuación, llama al método Attach . Este enfoque es típico para los programas lanzados localmente por un proveedor de puertos.También es posible que un proveedor de puertos personalizado llame al
IDebugEngine2::Attachmétodo en la implementación del proveedor de puertos personalizado delIDebugProgramEx2::Attachmétodo . Normalmente, en este caso, el proveedor de puertos personalizado inicia el motor de depuración en la máquina remota.Los datos adjuntos se logran cuando el administrador de depuración de sesión (SDM) llama al método Attach .
Si ejecuta el DE en el mismo proceso que la aplicación que se va a depurar, debe implementar los métodos siguientes de IDebugProgramNode2:
-
Después de llamar al
IDebugEngine2::Attachmétodo , siga estos pasos en la implementación delIDebugEngine2::Attachmétodo :
Envíe un objeto de evento IDebugEngineCreateEvent2 al SDM. Para obtener más información, consulte Envío de eventos.
Llame al método GetProgramId en el objeto IDebugProgram2 que se pasó al
IDebugEngine2::Attachmétodo .Esto devuelve un
GUIDque se usa para identificar el programa.GUIDDebe almacenarse en el objeto que representa el programa local al DE y debe devolverse cuando se llama alIDebugProgram2::GetProgramIdmétodo en laIDebugProgram2interfaz.Nota:
Si implementa la
IDebugProgramNodeAttach2interfaz , el programaGUIDse pasa alIDebugProgramNodeAttach2::OnAttachmétodo . EstoGUIDse usa para el programaGUIDdevuelto por elIDebugProgram2::GetProgramIdmétodo .Envíe un objeto de evento IDebugProgramCreateEvent2 para notificar al SDM que el objeto local
IDebugProgram2se creó para representar el programa en el DE. Para obtener más información, consulte Envío de eventos.Nota:
Este no es el mismo
IDebugProgram2objeto que se pasó alIDebugEngine2::Attachmétodo . El objeto pasadoIDebugProgram2anteriormente solo lo reconoce el puerto y es un objeto independiente.