visual studio simbolos simbolo punto puede para ningun interrupción fuente este encuentra encontrar documento desencadenado depurador código codigo cargado archivo actualmente activará abrir c# .net debugging dll

c# - simbolos - pdb visual studio



¿Depurar una DLL de terceros en Visual Studio? (8)

Basándose en la respuesta de Andrew, simplemente trata el código fuente descompilado como una nueva biblioteca dentro de su proyecto y establece los puntos de interrupción en la fuente. Elimine todas las referencias a la DLL de terceros para que se ejecute el código decompilado.

Otras cosas:

  • Puede estar infringiendo la ley descompilando el código o incumpliendo un acuerdo de licencia con el proveedor externo. Asegúrate de revisar esto con alguien.
  • Deberá asegurarse de eliminar las referencias a su versión descompilada si está enviando a otros desarrolladores, o de consultar un árbol fuente más grande. ¡Fácil de olvidar esto!

Estoy usando una DLL de terceros. Para algunos casos particulares, una función en el DLL lanza una excepción. ¿Es posible depurar la DLL en Visual Studio?

Después de la respuesta de Andrew Rollings , puedo ver el código, pero ¿hay alguna manera fácil de depurar el código en Visual Studio?


.NET Reflector 6 viene con un complemento de Visual Studio que le permite usar la eliminación de fallas paso a paso de Visual Studio en ensamblajes para los que no tiene el código fuente.

Echa un vistazo a esta publicación de blog:

http://www.simple-talk.com/community/blogs/alex/archive/2009/09/22/74919.aspx para más detalles.

Esta es una construcción muy temprana. Así que no hay garantía de que funcione, y podría romper la configuración de tu estudio visual o la configuración del proyecto. Asegúrese de tener copias de seguridad (o control de fuente) para cualquier proyecto en el que use esto.

Descargue aquí: http://www.red-gate.com/MessageBoard/viewforum.php?f=109



Algo que me ha funcionado al depurar un par de bibliotecas de terceros, así como también .NET , es WinDbg . Es un asombroso depurador de Microsoft que he utilizado para solucionar algunos problemas persistentes que se estaban produciendo en el marco.

Debe usar las extensiones de Son of Strike (SOS) si se trata de una DLL administrada. Puede depurar nativo también. Necesitará saber un poco sobre las llamadas instaladas y las instrucciones de montaje / CIL para ser bueno en su uso. Debería poder determinar la excepción y lo que la está causando. Hemos utilizado WinDbg / SOS para encontrar, por ejemplo, que en HttpWebResponse, si está utilizando compresión Gzip para descargar una página y el servidor devuelve un encabezado Gzip incorrecto, .NET ejecuta la descompresión en el grupo de hilos y un bloqueo eliminará su proceso. Feliz depuración.



Hay dos métodos con los que me he encontrado:

1) Acceder al proyecto DLL desde el proyecto en uso. Esto implica construir la DLL en una instancia separada de Visual Studio y luego acceder a la DLL a través de un proyecto diferente en Visual Studio (esto supone que tiene el código fuente). Hay varias maneras de lograr esto:

  • Puede agregar instrucciones Trace.WriteLine en la DLL que se mostrará en la ventana ''Salida'' en Visual Studio.
  • Puede agregar instrucciones System.Diagnostics.Debugger.Break() al código DLL. Al ejecutar el proyecto de llamada en Visual Studio, la ejecución del programa se detendrá allí. Desde aquí puede agregar acceso a la pila de llamadas (incluidas todas las llamadas a funciones en DLL) y establecer puntos de interrupción (aunque el ícono para el punto de interrupción aparecerá desactivado y el texto emergente para el punto de interrupción indicará "El punto de interrupción no será afectado actualmente" . No se han cargado símbolos para este documento ").
  • Si el archivo DLL arroja una excepción (que puede ver en la ventana ''Salida'' si la DLL atrapa y maneja la excepción) puede decirle a Visual Studio que siempre se corte cuando se lanza ese tipo de excepción. Presiona Ctrl + Alt + E , busca el tipo de excepción que se está lanzando y haz clic en la columna ''Lanzar'' para esa excepción. Desde aquí es exactamente como si hubiera usado System.Diagnostics.Debugger.Break() (ver arriba).

2) Adjuntar un proceso de uso al proyecto DLL. Esto implicó conectar el depurador de Visual Studio a un proceso en ejecución.

  • Abra el proyecto DLL en Visual Studio.
  • Ejecute una aplicación que use el DLL (esta aplicación no se puede ejecutar desde otra instancia de Visual Studio ya que el proceso ya tendrá un depurador adjunto).
  • Desde aquí puede agregar puntos de interrupción y recorrer el código DLL cargado en Visual Studio (aunque el punto de interrupción aparecerá desactivado de la misma manera que en el método 1).

Pensé que .NET Reflector tenía algunos plugins de depuración. Esa sería una idea mucho mejor porque el código de descompilación y recompilación generalmente falla, y necesita hacer muchos cambios en el código para solucionarlo.

Prueba el depurador .NET Reflector. Puede ser que te ayude mucho.


Si el archivo DLL está en un lenguaje .NET , puede descompilarlo usando una herramienta como .NET Reflector y luego depurar el código fuente.

O puede preguntarle al proveedor si el código fuente está disponible. Esa es probablemente la forma más fácil.