c# - ubicacion - Cómo depurar un dll referenciado(que tiene pdb)
pdb visual studio (7)
Cuando desee establecer un punto de interrupción en el código fuente de una dll referenciada, primero asegúrese de tener un archivo pdb disponible. Luego puede simplemente abrir el archivo de código fuente relacionado y establecer un punto de interrupción allí. El archivo fuente no necesita ser parte de su solución. Como se explica en ¿Cómo puedo establecer un punto de interrupción en el código al que se hace referencia en Visual Studio?
Puede revisar sus puntos de interrupción a través de la ventana de puntos de interrupción, disponible a través de Debug -> Windows -> Puntos de interrupción.
Este enfoque tiene la ventaja de que no se requiere que agregue un proyecto existente a su solución solo para fines de depuración, ya que omitirlo me ha ahorrado mucho tiempo de compilación. Evidentemente, construir una solución con solo un proyecto es mucho más rápido que construir una solución con muchos de ellos.
Mi pregunta se refiere a Visual Studio 2008, aunque supongo que debería ser igual en VS2005
Tengo dos soluciones en mi espacio de trabajo, digamos A y B.
La solución A es un proyecto anterior que terminé de codificar hace algún tiempo. En la solución B, necesito usar algunas clases de la Solución A. Para hacerlo, agrego una referencia al dll de uno de los proyectos en la solución A.
El problema es cuando intento depurar. También quiero entrar en el código de A. Visual Studio no puede cargar el código para estas clases ("No hay un código fuente disponible para la ubicación actual") y solo puedo ver el desmontaje, lo cual no es útil.
La única forma que conozco de depurar clases de la solución A es ejecutar la solución B, separar todos los procesos (en el elemento del menú Depurar) y adjuntar el proceso de la solución A.
Sin embargo, esto es muy inconveniente y solo puedo depurar A o B de una vez.
¿Hay alguna manera de permitir entrar en el código de los dlls referenciados (para los cuales sí tengo el código fuente)?
Solución: Mi error fue que pensé que un proyecto solo podía ser parte de una única solución. De hecho, un proyecto puede ser parte de cualquier cantidad de soluciones.
Cuando necesite hacer referencia al proyecto anterior, simplemente debe agregar el proyecto a la solución. Esto se hace haciendo clic con el botón derecho en la nueva solución en el Explorador de soluciones> Agregar> Proyecto existente.
Luego, podrá agregar la referencia del proyecto. Como escribieron otros, probablemente debería evitar por completo el uso de referencias dll a su propio código (u otro código que necesite cambiar y depurar).
Se puede encontrar una muy buena referencia de cómo se deben diseñar las soluciones en MSDN .
Debe funcionar. ¡Solía depurar un archivo .exe y un dll al mismo tiempo! Lo que sugiero es 1) Incluir la ruta de acceso del dll en su proyecto B, 2) Luego compilar para depurar su proyecto A 3) Controlar que la ruta apunte al archivo A dll y de pdb ... 4) Después de eso comience a depurar el proyecto B y, si todo está bien, ¡podrá depurar en ambos proyectos!
No quiero incluir un proyecto externo de biblioteca de clases en algunas de mis soluciones, así que paso a ensamblajes que consumo de una manera diferente.
Mis soluciones tienen un directorio "Common Assemblies" que contiene mis propios archivos DLL de otros proyectos. Las DLL que menciono también tienen sus archivos PDB para la depuración.
Para depurar y establecer puntos de interrupción, establezco un punto de interrupción en el origen de la aplicación de consumo donde estoy llamando a un método o constructor desde el ensamblado y luego paso INTO (F11) la llamada de método / constructor.
El depurador cargará el archivo fuente del ensamblado en VS y se pueden establecer nuevos puntos de interrupción dentro del ensamblaje en ese punto.
No es sencillo, pero funciona si no desea incluir una nueva referencia de proyecto y simplemente desea hacer referencia a un ensamblado compartido en su lugar.
Otro punto a tener en cuenta, asegúrese de que los dlls a los que se hace referencia no estén instalados en el GAC. Después de las pruebas, instalé mi dlls en el GAC para realizar pruebas de nivel del sistema. Más tarde, cuando tuve que depurar mi código nuevamente, no pude entrar en los ensamblados a los que hacía referencia hasta que los borré del GAC.
Si tiene una referencia de proyecto , debería funcionar de inmediato.
Si se trata de una referencia de archivo (dll), necesita que los símbolos de depuración (el archivo "pdb") estén en la misma carpeta que el dll. Verifique que sus proyectos estén generando símbolos de depuración (propiedades del proyecto => Build => Avanzado => Salida / depuración Información = lleno); y si ha copiado el dll, ponga el pdb con él.
También puede cargar símbolos directamente en el IDE si no desea copiar ningún archivo, pero es más trabajo.
¡La opción más fácil es usar referencias de proyectos!
Tuve el mismo problema. Él es lo que encontré:
1) asegúrese de que todos los proyectos estén usando el mismo Marco (¡esto es crucial!)
2) en Herramientas / Opciones> Depuración> General, asegúrese de que "Habilitar solo mi código (solo administrado) NO está marcado
3) en Herramientas / Opciones> Depuración> Símbolos elimine cualquier símbolo en caché, desmarque y elimine todas las ubicaciones de carpeta en el cuadro de lista "Ubicaciones de archivos de símbolos (.pdb)", excepto el predeterminado "Servidores de símbolos de Microsoft", pero desactívelo también. Elimine también las rutas estáticas en el cuadro de texto "Símbolos de caché en este directorio". Haga clic en el botón "Vaciar la memoria caché de símbolos". Finalmente, asegúrese de que el botón de opción "Solo módulos especificados" esté marcado.
4) en el menú Build / Configuration Manager para todos los proyectos, asegúrese de que la configuración esté en modo Debug.
Paso 1: vaya a Herramientas -> Opción -> Depuración
Paso 2: desmarca Habilitar solo mi código
Paso 3: Desmarque Requerir que el archivo fuente coincida exactamente con la Versión original
Paso 4: Desmarque Propiedades y operadores paso a paso