2009-05-15 21 views
52

Tengo instalado Visual Studio 2005 para usar los servidores de símbolos de Microsoft. También tengo UltraMon instalado, que inyecta un archivo DLL gancho en cada proceso. Cada vez que comenzamos a depurar mi aplicación MFC, Visual Studio dice:Impedir que Visual Studio intente cargar símbolos para una DLL en particular

"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..." 

para cualquier cosa de un abrir y cerrar de ojos a varias decenas de segundos. Nunca va a encontrar esos símbolos ... ¿Puedo decirle que no se moleste en mirar?

(He intentado crear un archivo vacío RTSUltraMonHookX32.pdb, pero Visual Studio ve que no es buena y continúa buscando.)

Respuesta

88

No se puede hacer esto de una forma de grano muy fino, pero se puede desactivar automáticamente el símbolo de carga y luego elija manualmente los símbolos para cargar a través de la ventana Módulos (Depurar - > Windows - > Módulos).

Para desactivar Símbolo automático de carga

  • Herramientas - > Opciones - > de depuración - > Símbolos
  • Elija "Buscar los lugares anteriores sólo cuando los símbolos se cargan manualmente"
22

también comprobar que no tiene variable de entorno "_NT_SYMBOL_PATH". Si tiene este var, los símbolos se cargarán independientemente de la configuración de VS.

1

También puede configurar exclusiones de servidor de símbolos que no se intentarán descargar en HKEY_CURRENT_USER \ Software \ Microsoft \ Symbol Server \ Exclusions o posiblemente también HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Symbol Server \ Exclusions o mediante un archivo .ini en % WINDIR% \ system32 \ inetsrv \ Symsrv.ini (use el encabezado [exclusiones] y ponga cada exclusión en su propia línea). Las exclusiones son coincidencias de patrones simples, entonces use msxml5. * Por ejemplo.

+0

Esto suena perfecto, pero no funciona para mí. He agregado entradas al registro, y creé un symsrv.ini con las entradas correctas en él, y reinicié mi máquina por las dudas, pero aún así Visual Studio intenta cargar los símbolos. ¿Algunas ideas? – RichieHindle

+0

No funciona para mí tampoco. Pero por lo que yo entiendo, esta lista es solo para PDBs, no DLLs. – Calvin1602

1

No solo el _NT_SYMBOL_PATH puede causar este comportamiento, sino que para mí fue la variable de entorno _NT_ALT_SYMBOL_PATH la que estaba causando los retrasos.

(creo que he añadido esta variable al experimentar con WinDbg)

18

Desde Visual Studio 2010 en adelante, se puede ir a:

Tools -> Options -> Debugging -> Symbols -> Specify excluded modules 

y entrar en la lista de los archivos DLL que toman demasiado tiempo para carga. Uso la ruta completa, dada por la Ventana de salida; tal vez acepta comodines o nombres de archivos simples.

+1

Esto lamentablemente no está disponible en Visual Studio 2005, pero es bueno saber que está allí en una versión posterior. – RichieHindle

+1

@RichieHindle De hecho; pero el método de IIRC, el método de JaredPar en el VC2005, sin embargo. – Calvin1602

+0

Es posible usar comodines de hecho. Microsoft proporcionó una interfaz de usuario muy confusa, ni una sola nota sobre posibles comodines. por ejemplo, podría desactivar la carga del símbolo DevExpress agregando "DevExpress *" en la lista. –

0

En Visual Studio 2013 Pro, si el Servidor de símbolos de Microsoft está marcado, VS intentará cargar todos los símbolos en su servidor, lo que causará mucho tiempo extra.

0
  • carga todos los paquetes de símbolos de la página web de MS manualmente, ponerlos en una unidad SSD para la velocidad :-)
  • Si tiene una variable de entorno "_NT_SYMBOL_PATH", quitar la parte "http://msdl.microsoft.com/download/symbols" de "SRV e: \ symbols * http://msdl.microsoft.com/download/symbols ", por lo que solo tiene la ruta del símbolo donde sus símbolos se descargan de forma preciosa.
  • Ahora usted tiene el apoyo de los símbolos, pero que no será descargado de la EM, pero cargado desde la unidad
2

En mi caso fue porque me había fijado "Activar .Net Fuente Stepping" true en

Tools > Options > Debugging > General. 

En lugar de establecerlo en falso, configuré "Habilitar solo mi código" como verdadero, que establece automáticamente "Habilitar .Net Source Stepping" en falso. Me dio una advertencia antes de hacerlo:

Enabling Just my code automatically disabled .Net framework source stepping 

Lo que sugiere Just My Code y .Net source stepping son mutuamente excluyentes .

Espero que esto ayude a alguien.

+1

Tienes razón ... – Bharat

Cuestiones relacionadas