Hace algún tiempo, leí un artículo sobre CLR, donde el autor mostró que si un proyecto se compila en modo DEPURAR, antes de que cada operador incluya un comando NOP, lo que permite depurar un código. Sin embargo, hoy descubrí que también podemos depurar en modo de lanzamiento también ... Por favor, ayúdenos a entender la diferencia.Depuración en .NET en modo de lanzamiento
Respuesta
Puede depurar en modo Liberar hasta cierto punto. Depurar y liberar son simplemente configuraciones de compilación (de las cuales puede crear muchas), la verdadera diferencia es que la configuración de depuración no optimiza el código binario generado (el código optimizado complica la depuración). También genera datos de depuración adicionales que la versión no.
¿Entonces está diciendo que la configuración de Debug complica la depuración? –
No, lo siento, dije que optimizar el código complica la depuración. Reescribiré eso para que no sea confuso. – erodewald
Depuración .net código para que pueda recorrer el código fuente mientras se ejecuta normalmente requiere de tres cosas:
- Símbolos (el archivo .pdb relacionada) que se construyeron junto con el conjunto. DLL o .exe
- Fuente (los Cs relacionados, .vb, etc. archivos)
- El código de máquina de ejecución debe ser sin optimizar
Los símbolos están controlados por la bandera /debug:{full | pdbonly}. Si especifica /debug:full
(incluso en una compilación de lanzamiento, con las optimizaciones del compilador desactivadas), puede adjuntarlo a un proceso ya en ejecución y pasar por el código. Si tiene /debug:pdbonly
, debe usar el depurador para iniciar el programa (y no puede ver símbolos cuando se conecta a un proceso ya en ejecución).
Optimización se controla de forma granular mediante la opción /debug compilador, pero se puede controlar aún más por la /optimize-.
La compilación en modo de lanzamiento optimiza el binario resultante, lo que dificulta (pero no imposibilita) que el depurador sepa qué código binario vino de qué línea de línea del código fuente.
El modo de depuración está diseñado para facilitar al depurador el "seguimiento", por lo que separa las líneas de código con NOP y no optimiza el binario resultante.
Quiero decir, es raro que se otorgue un control tan grande sobre estos procesos. Porque hoy vi que mi colega depuró el código sin problemas en el modo de lanzamiento y cuando le pregunté sobre esto, no lo sabía. –
Sin los símbolos de depuración (archivo .pdb), el depurador no sabrá cuál era el código fuente original, pero aún podrá recorrer el código binario. AFAIK, un depurador puede adjuntar a cualquier proceso que desee, y seguirlo. El sistema operativo otorga mucha autoridad a los depuradores. –
Hm, por lo que será más difícil para el depurador, ¿pero aún es posible? (Es decir, sin un archivo pdb)? –
- 1. Símbolos de depuración en modo de lanzamiento
- 2. programación detección de modo de lanzamiento/depuración (NET)
- 3. ¿Implementar la aplicación en producción usando el modo de depuración en lugar del modo de lanzamiento?
- 4. problemas con Console.SetOut en modo de lanzamiento?
- 5. ¿Por qué mi aplicación falla en modo de lanzamiento pero no en modo de depuración?
- 6. Trace.WriteLine en modo de lanzamiento?
- 7. Depuración de depuración o lanzamiento del informe?
- 8. bucle infinito en modo de lanzamiento
- 9. ¿Cómo depurar en modo de lanzamiento?
- 10. depuración vs lanzamiento en CMAKE
- 11. ¿Puede el operador C# 'es' sufrir en optimización de modo de lanzamiento en .NET 4?
- 12. modo de lanzamiento mucho más grande que la versión modo de depuración
- 13. ¿Debug.Assert genera IL en modo de lanzamiento?
- 14. Escribir para depurar en modo de lanzamiento
- 15. Debug.Assert aparece en el modo de lanzamiento
- 16. Embalaje de proyectos NuGet compilados en modo de lanzamiento?
- 17. ¿Cuál es la diferencia entre el modo de depuración y el modo de lanzamiento en Visual Studio 2010?
- 18. ¿Diferencia de rendimiento entre un ensamblado .NET integrado en modo depuración y versión?
- 19. Bloqueo con una aplicación x64 .NET 4.0 en modo de lanzamiento fuera del IDE solamente
- 20. ¿Cómo construir en modo de lanzamiento con optimizaciones en GCC?
- 21. Modo de depuración En VB 6?
- 22. Versión vs Modo de Depuración en IDE
- 23. Ejecutando RSpec en modo de depuración
- 24. ¿Cómo generar PDB para proyectos administrados .net en modo de lanzamiento?
- 25. Visual Studio: información de depuración en la compilación de lanzamiento
- 26. depuración visual studio vs versión modo
- 27. Depuración de la aplicación iOS en el primer lanzamiento
- 28. La aplicación iPhone se bloquea solo en el modo de lanzamiento en 3G
- 29. ¿Cómo habilitar la macro TRACE en el modo de lanzamiento?
- 30. es assert (false) ignorado en modo de lanzamiento (VC++)?
¿Cómo? Realmente no sé cómo se puede depurar en Release Mode – crassr3cords
Me encontré con que no puedo moverme a otros asseblies mientras estaba depurando en el modo de lanzamiento –