publicar net asp .net asp.net web-services iis

.net - net - Despliegue de archivos.PDB en IIS. Cualquier beneficio?



svc service in iis (3)

Estoy implementando soluciones ASP.NET y de servicios web para IIS para un servidor de desarrollo . Parece que la última persona que hizo este trabajo implementó todos los archivos .pdb también. Le pregunté al respecto y me dijeron que "proporcionan una mejor información de rastreo de pila en los registros" si se dejan en el servidor.

¿Hay algo de cierto en esto? Siempre los he dejado atrás, nunca los he desplegado en ningún otro lugar que no sea mi máquina local.

Para un servidor IIS de desarrollo interno (no de producción, no accesible para el mundo exterior) ¿hay algún motivo para desplegar o no los archivos .pdb? ¿Hay algo malo que pueda pasar? ¿Realmente proporcionan algún beneficio?


La implementación de archivos .pdb es útil si desea depurar remotamente su aplicación.

hay un artículo de MSDN here explica el proceso


Si está registrando excepciones, la implementación de los archivos PDB garantiza que las excepciones incluyan números de línea (por lo que Steven A. Lowe me ha informado en muchas ocasiones;))


Siempre pensé que los archivos .pdb solo los usaba el depurador. Si el tiempo de ejecución siempre busca información de depuración, eso debería significar una ejecución más lenta al lanzar una excepción, porque tiene que leer el archivo .pdb, ¿verdad?

Así que hice una prueba rápida:

using System; using System.Text; namespace PdbSpeedTest { class Program { static void Main(string[] args) { DateTime start = DateTime.Now; try { Program p = new Program(); p.Looper(0); } catch (NotImplementedException e) { Console.WriteLine(e.StackTrace); } TimeSpan span = DateTime.Now - start; Console.WriteLine(span.TotalMilliseconds.ToString()); } internal void Looper(int x) { try { if (x < 100) Looper(x + 1); else throw new NotImplementedException("blah!"); } catch (NotImplementedException e) { throw new NotImplementedException("blah!", e); } } } }

Esto simplemente recursifica 100 niveles de profundidad y arroja una excepción. Ahora para los resultados de tiempo de ejecución:

Se ejecuta como una versión de depuración con .pdb en la misma carpeta:

C:/Work/PdbSpeedTest/bin/Debug>PdbSpeedTest.exe at PdbSpeedTest.Program.Looper(Int32 x) in C:/Work/PdbSpeedTest/Program.cs:line 37 at PdbSpeedTest.Program.Main(String[] args) in C:/Work/PdbSpeedTest/Program.cs:line 16 31.2504

Ejecutando como una construcción de depuración sin el .pdb:

C:/Work/PdbSpeedTest/bin/Debug>PdbSpeedTest.exe at PdbSpeedTest.Program.Looper(Int32 x) at PdbSpeedTest.Program.Main(String[] args) 15.6252

Ejecutando como una versión de lanzamiento con .pdb:

C:/Work/PdbSpeedTest/bin/Release>PdbSpeedTest.exe at PdbSpeedTest.Program.Looper(Int32 x) in C:/Work/PdbSpeedTest/Program.cs:line 37 at PdbSpeedTest.Program.Main(String[] args) in C:/Work/PdbSpeedTest/Program.cs:line 16 31.2504

Ejecutando como una versión de lanzamiento sin el .pdb:

C:/Work/PdbSpeedTest/bin/Release>PdbSpeedTest.exe at PdbSpeedTest.Program.Looper(Int32 x) at PdbSpeedTest.Program.Main(String[] args) 15.6252

Estos se ejecutaron desde un antiguo símbolo del sistema, no dentro de Visual Studio. Por lo tanto, el .pdb definitivamente agrega información de rastreo de pila, y ralentiza el manejo de excepciones. ¡Muy interesante!