Tengo una DLL escrita en C++ y llama desde un C# aplicación. El DLL es que el código no administrado.

Si puedo copiar la DLL y su .pdb archivos con un post de eventos de generación para el C# de la aplicación de depuración de ejecución dir todavía no puedo golpear a cualquiera de los puntos de encuentro que he puesto en el DLL código. El punto de equilibrio tiene un mensaje asociado a él diciendo que «no hay símbolos se han cargado para este documento».

¿Qué más tengo que hacer para conseguir la depuración en la dll fuente?

Tengo «Tools->Options->Debugging->General->Enable sólo mi código» Desactivado.
El DLL está compilado con «tiempo de ejecución y seguimiento de deshabilitar las optimizaciones (/ASSEMBLYDEBUG)» y Generar Información de Depuración a «Sí (/DEBUG)»

InformationsquelleAutor QueueHammer | 2009-11-16

4 Comentarios

  1. 58

    Para depurar en la DLL de C++ necesita habilitar la depuración en modo mixto en la aplicación de inicio en su solución.

    • Haga clic derecho en el proyecto -> Propiedades
    • Ir a la Ficha Depurar
    • De verificación «Habilitar la depuración de código no administrado»

    Esto le permitirá depurar en código nativo para un F5 estilo de escenario. Si desea habilitar para adjuntar al proceso, a continuación, haga lo siguiente en el «Adjuntar al Proceso de Diálogo»

    • Seleccionar el proceso de depurar
    • Haz clic en «Seleccionar …» botón de arriba de la lista de procesos
    • Haga clic en «Depurar estos tipos de código»
    • De verificación Nativo y Administrado
    • Mientras yo iba a responder a esto, yo no estaba seguro de si era tan sencillo, o no. Si es así de sencillo, he probable que siempre se utiliza mal al intentar depurar managed C++ de código que interactúa con el código nativo.
    • Tenga en cuenta que si el proyecto de inicio se utiliza otro C# proyecto de DLL que realmente llama a la DLL de C++, el proyecto de inicio debe tener también «Habilitar la depuración de código no administrado» activado.
    • Seleccione la solución en el Explorador de soluciones. Seleccione de >Menú|Herramientas|opciones|Depuración|General y Desactive la casilla «Requerir archivos de origen para que coincida exactamente con la versión original»
    • Esto es genial cuando tienes el código fuente de C# app así. Pero, ¿qué sucede si usted tiene la fuente de la DLL de C++, pero no el de C# de la aplicación, por ejemplo un cliente que utiliza el archivo DLL se queja de que no está funcionando, pero no se le dará acceso al código fuente de su programa de C#? Hay una manera de activar la depuración entonces?
    • Para VS de 2013, el valor se llama «Habilitar depurar código nativo», todavía en la Depuración de la ficha de propiedades del proyecto.
    • También no se olvide: Tool | Options | Debugging | General en la parte inferior de asegurar que «el Uso de Administrado el Modo de Compatibilidad» está marcada.
    • Un duro para encontrar la respuesta no podía obtener más simple. Se lo agradezco!

  2. 4

    Necesita habilitar el administrado (Nativo) depuración.

    Si va a adjuntar al proceso después de que se inicia:

    Vaya al menú Herramientas y, a continuación, adjuntar al proceso, asegúrese de que usted tiene nativas de la depuración activada.

    Verá un sólo lectura casilla de edición:

    Adjuntar a: código Administrado, el código Nativo
    [Seleccionar]

    Asegúrese de que el código Nativo está en la lista. Si no lo agregue.

    Si usted está comenzando su proyecto desde dentro de visual studio:

    En las propiedades del proyecto que está iniciando en modo de depuración. Ir a las Propiedades del proyecto y, a continuación, seleccione la ficha depurar.

    Asegúrese de que esta casilla de verificación está marcada en:

    Habilitar la depuración de código no administrado

  3. 1

    Cuando se conecte a un proceso de depuración, usted tiene que especificar cómo desea adjuntar. Usted tiene un par de opciones, es decir, Administrados y de los Nativos. En orden a la depuración de código de C# con C++ no administrado, deberá adjuntar a un proceso de gestión y Nativa (ambos pueden ser seleccionados al mismo tiempo).

  4. 0

    Se habían enfrentado el mismo problema e hizo todo lo que se sugirió en la aceptación de la respuesta, sino que los puntos de interrupción en el no administrado DLL no se de que te golpeen!

    Sin embargo, cuando hice las siguientes finalmente pude depurar el archivo DLL!

    Seleccione la solución en el Explorador de soluciones

    Seleccione una de Menu>>Tools>>options>>Debugging>>General

    Desmarca la casilla «Requieren archivos de origen para que coincida exactamente con la versión original«

Dejar respuesta

Please enter your comment!
Please enter your name here