Mi aplicación es una combinación de código C# y C++. El módulo de inicio escrito en C# se carga durante la fase de inicialización del módulo C++ a través del mecanismo COM (Modelo de Objetos Componentes). Todo estaba funcionando correctamente hasta que decidí agregar a C# parte un servicio wcf. Todas las llamadas de servicio wcf se enrutan a código C++ utilizando COM. Después de agregar algunos métodos nuevos noté pérdidas de memoria en la ventana de salida. Así que agregué el punto de interrupción al desctructor de la clase C++ como se puede ver en la captura de pantalla. A partir de este momento comenzaron a suceder cosas extrañas. Después de que el programa llega al punto de interrupción, inesperadamente se bloquea. Lo primero extraño es que cuando ejecuto un programa sin establecer un punto de interrupción, termina amablemente. Lo segundo extraño es que la forma en que se bloquea el programa es como si se estuviera ejecutando sin depurador. Después de hacer clic en el botón "Abrir en el depurador" (o algo así) recibo un mensaje de error: "El programa ya está abierto en el depurador". Ninguno mensaje en la ventana de salida que podría indicarme el origen del error, ningún código sospechoso. Al agregar el cuadro de mensaje al destructor comenzando, se muestra durante una fracción de segundo y luego se cierra toda la aplicación (sin agregar la oportunidad del usuario para leer lo que se muestra en el cuadro de mensaje). Buscando desesperadamente cualquier pista.Bloqueo extraño al depurar el destructor de objetos COM
P.S. Los problemas ocurren solo cuando se llama al método wcf al menos una vez. No depende si el flujo del programa en esta llamada en particular fue enrutado al nivel de C++ o no.
Trate de usar WinDbg en lugar del depurador VS para obtener más información sobre el bloqueo – SpaceghostAli