31 votos

No se puede Depurar Dll no administradas desde C#

Tengo una DLL escrita en C++ y se llama desde una aplicación en C#. La DLL de código no administrado. Si puedo copiar la DLL y su .los archivos pdb con un post evento de compilación de 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 código de DLL. 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 el archivo dll fuente?

He "Herramientas->Opciones->Depuración->General->Habilitar sólo mi código" Desactivado. La 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)"

56voto

JaredPar Puntos 333733

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 sobre 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"

  • Seleccione el proceso de depuración
  • Haz clic en "Seleccionar ..." botón de arriba de la lista de procesos
  • Haga clic en "Depurar estos tipos de código"
  • Compruebe Nativo y Administrado

4voto

Brian R. Bondy Puntos 141769

Necesita activar 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.

Usted verá un sólo lectura casilla de edición:

Adjuntar: 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

1voto

Joseph Puntos 18099

Cuando 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).

0voto

Martin.kv Puntos 917

Me había enfrentado el mismo problema e hizo todo lo que se sugirió en la aceptación de la respuesta, sino que los breakpoints 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 desde el Menú|Herramientas|opciones|Depuración|General
Desmarca la casilla "Requerir archivos de origen para que coincida exactamente con la versión original"

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: