2011-08-02 8 views
12

tengo los siguientes tres proyectos en mi solución: 1. C# biblioteca 2. C++/CLI código administrado 3. C++ código no administradoCómo paso en no administrado biblioteca de C++ de mi C++/CLI código

I Verificó "Habilitar la depuración de código no administrado" en mi proyecto C#, y creó ambos proyectos C++ en Debug/Win32. Sin embargo, no puedo entrar en el código no administrado: cuando hago F11 en la llamada de cualquier método no administrado, me muestra algún código aleatorio/incorrecto que luego sale.

Como las pruebas de mi unidad pasan, sé que mi código no administrado se ejecuta.

¿Qué me estoy perdiendo?

+1

¿Tiene los archivos .pdb para el código no administrado que está intentando ingresar? –

+0

puede intentar iniciar el proceso gestionado y pausarlo (por cualquier medio), colocar un punto de interrupción en su proyecto no administrado y seleccionar "Depurar -> Adjuntar proceso", seleccionar el proceso gestionado y continuar el proceso gestionado. – Philipp

+0

@Steven: sí Veo vc90.pdb –

Respuesta

10

Cuando he tenido este problema que ha venido de una de estas cosas:

1) Activar el código no administrado depuración no se controla. Ya arreglaste esto.

2) Construyó el EXE como x64 o como cualquier CPU (dicen que x64 funciona, pero no es así). Creo que ya arreglaste esto.

3) "Sólo mi código" se enciende a veces causa problemas con la depuración de código no administrado (Herramientas, Opciones, depurador, Sólo mi código)

4) opciones de depuración incorrecta en el C configuración del proyecto ++

5) Archivos PDB perdidos, corruptos o no coincidentes. Puede comprobar esto intentando establecer un punto de interrupción en su código C++ mientras se ejecuta en el depurador. Si el punto de interrupción se convierte en un círculo hueco, algo está mal con su información de depuración. También verifique su ventana de salida a medida que se ejecuta en modo de depuración: debería indicarle de quién se cargaron los símbolos.

+0

funcionó para mí, gracias! –

+2

@Arne, ¿cuál de los 5 trabajó? –

+0

Para mí, creo que "Solo mi código" podría haber sido parte del problema. –

3

He visto este problema de la "otra" manera de vez en cuando (es decir, de C++ nativo a C++/CLI) y generalmente es causado por el depurador que realmente no depura que debe depurar tanto código administrado

Normalmente, configurar el tipo de depuración en Propiedades de configuración -> La depuración en el proyecto de inicio de 'Auto' a 'Mixto' resuelve el problema.

+0

Cambié de 'Auto' a 'Mixto', eso no me ayudó. –

+0

Yo tampoco. Mi punto de interrupción recibe un golpe, pero no recibo información sobre ninguna variable en los Locales ni en la ventana Inspección, etc. –

+0

Vi esto también. Si simplemente depuro F5 o lo adjunto a un EXE C#, VS no quería cargar el depurador mixto. Cada vez que depuré necesitaba especificar que quería depuradores nativos y de .NET. –

Cuestiones relacionadas