visual studio debug cli c# c++ visual-studio-2010 debugging c++-cli

c# - studio - c++/cli



depuraciĆ³n en modo mixto con C++ nativo, c++ cli administrado y soluciĆ³n c# (3)

Tengo un proyecto de subprocesamiento múltiple en el que estoy trabajando y el proyecto de inicio está configurado como ac # project que ejecuta mi interfaz de usuario. Luego, hay una serie completa de proyectos nativos de c ++ subyacentes que están conectados a C # mediante proyectos administrados de C ++ / CLI. He habilitado en el proyecto de inicio c # ''Habilitar depuración no administrada'' y cuando intento depurar el código nativo, puedo establecer puntos de ruptura que he establecido. Sin embargo, se cuelga después de que intento ejecutarlo nuevamente e intento alcanzar un punto de ruptura nuevamente. Por ejemplo, si tengo un bucle, intento golpear dentro de él en cada iteración, después de la segunda iteración, el programa se cuelga y tengo que forzar la salida. Estoy trabajando en Visual Studio 2010. La depuración comienza a resultar poco útil a este ritmo, ¿hay alguna forma de evitar este problema?


Cuando quiero depurar código nativo así como C ++ / CLI, hago lo siguiente:

  1. En la aplicación C #, marque Allow unsafe code en la pestaña Generar y Enable unmanaged code debugging en la pestaña Depurar de las propiedades del proyecto.
  2. Para el proyecto dll de C ++ / CLI, en la pestaña Depuración de propiedades, configure el Tipo de depurador como Mixed

También tuvimos problemas al depurar aplicaciones de código mixto complejas y descubrimos que Visual Studio no es tan confiable en estas situaciones. Mis sugerencias serían:

  • Si está intentando depurar un fragmento de código nativo, intente utilizar un proyecto nativo como la aplicación de inicio del depurador. En la configuración del proyecto, la pestaña "Depuración" establece el "Tipo de depurador" en "Mixto", para nosotros esto nos ayudó a veces (el proyecto nativo puede ser una DLL, por ejemplo, simplemente establezca su Exe principal como objetivo de depuración en la configuración del proyecto);

  • Use WinDbg, con él puede depurar las aplicaciones de código mixto administradas / no administradas de manera mucho más confiable;


Tuve el mismo problema cuando intenté ingresar a un código no administrado desde administrado, así que en lugar de eso, me deshice de todos los puntos de interrupción en el lado administrado e hice lo siguiente:

1) abra su archivo fuente no administrado a través de Archivo-> Abrir-> Archivo (es decir, mi fuente.cpp)

2) establecer un punto de interrupción allí

3) comience su depuración de código administrado (botón de reproducción)

Debería entrar directamente en su código no administrado ... al menos me funciona ...