visual-c++ - significado - programas en c++ ejemplos basicos
Conjunto de modo mixto que no carga el sÃmbolo para pdbs nativos de C++ (1)
Estoy trabajando con ensamblajes de modo mixto en C ++ / CLI. Todos los pdb ensamblados en modo administrado se cargan correctamente cuando se ensambla en modo mixto, pero los dll y pdb nativos no se cargan aunque la información de pdb nativos se muestre en el panel Módulos (es decir, en Depuración VS-> Windows-> Módulos).
Estoy usando dll nativo y llamando a su función exportada en ensamblado mixto en código C ++ / CLI. Aquí, las funciones se llaman con éxito, pero los símbolos pdb nativos no se cargan y todos los puntos de corte en el código nativo se muestran como círculos vacíos y las sugerencias de herramientas indican que no hay símbolos cargados para esto.
He hecho todo, pdb colocado en el directorio actual donde se inicia el proceso administrado; eliminó todas las carpetas de obj y depuración y compiló todos los proyectos al mismo tiempo; Incluso utilicé la utilidad ChkMatch que muestra que los símbolos en el Exe y el correspondiente pdb coinciden.
¿Hay alguna manera de habilitar los puntos de interrupción del código nativo al llamar desde el código administrado (modo C ++ / LCI Mixed)?
Saludos,
Usman
La depuración en modo mixto puede ser impredecible, la mayoría se pierde. Primero compruebe que realmente tiene habilitada la depuración en modo mixto. Desde un proyecto de C #, es la casilla de verificación Project + Properties, Debug, Enabled unware code debugging. A continuación, la depuración de modo mixto no está habilitada para procesos de 64 bits. Si ejecuta un sistema operativo de 64 bits, asegúrese de forzar al .exe para que se ejecute en modo de 32 bits. Project + Properties, pestaña Build, Platform Target = x86.
A continuación, verifique dónde buscó el depurador los archivos .pdb. Desde la ventana Depurar + Módulos de Windows +, haga clic con el botón derecho en la DLL y seleccione "Información de carga del símbolo". Final jadeo es usar __debugbreak () en el código no administrado.