ADVERTENCIA La documentación de
MSDN para el modificador / debug (en Visual Studio es Información de depuración) parece estar desactualizada. Esto es lo que tiene que es incorrecto
Si usa / debug: full , tenga en cuenta que hay cierto impacto en la velocidad y el tamaño del código optimizado JIT y un pequeño impacto en la calidad del código con / debug: full . Recomendamos / debug: pdbonly o no PDB para generar código de lanzamiento.
Una diferencia entre / debug: pdbonly y / debug: full es que con / debug: full el compilador emite un DebuggableAttribute
, que se usa para decirle al compilador JIT que hay información de depuración disponible.
Entonces, ¿qué es verdad ahora?
- Solo Pdb : antes de .NET 2.0, ayudaba a investigar los volcados por caída del producto lanzado (máquinas del cliente). Pero no permitió adjuntar el depurador. Este no es el caso de .NET 2.0. Es exactamente igual que Full .
- Completo : esto nos ayuda a investigar los volcados por caída y también nos permite adjuntar el depurador a la versión de lanzamiento. Pero a diferencia de las menciones de MSDN, no afecta el rendimiento (desde .NET 2.0). Hace exactamente lo mismo que solo Pdb .
Si son exactamente iguales, ¿por qué tenemos estas opciones? John Robbins (dios de la depuración de Windows) descubrió que estos están ahí por razones históricas.
En .NET 1.0 había diferencias, pero en .NET 2.0 no las hay. Parece que .NET 4.0 seguirá el mismo patrón. Después de verificar dos veces con el equipo de depuración de CLR, no hay ninguna diferencia.
Lo que controla si JITter realiza una compilación de depuración es el conmutador / optimizar. <…>
La conclusión es que desea crear sus versiones de lanzamiento con / optimizar + y cualquiera de los modificadores / debug para que pueda depurar con el código fuente.
luego pasa a demostrarlo.
Ahora la optimización es parte de un cambio separado /optimize
(en Visual Studio se llama Optimize code
).
En resumen, independientemente de la configuración de DebugInfo como pdb-only o full, obtendremos los mismos resultados. La recomendación es evitar Ninguno, ya que le privaría de poder analizar los volcados por caída del producto lanzado o adjuntar el depurador.