Debug symbols performance issues (FFDA)
I have a question about debug symbols in .NET environments, especially 开发者_StackOverflow中文版ASP.NET. I know that compiling in Debug
mode prevents the code from being optimized, thus losing potential performance boosts.
However, debug symbols can prove useful if I want to perform FFDA, ie. when I get an exception from a deployed application I can still see the line numbers in its stack trace once I log it.
So, my questions are:
- Do debug symbols slow down the application continuously during its normal lifecycle? Or is it the same as running a non-optimized code without symbols?
- When are they used by the framework (ie. when does the slow-down occur)? I know for sure when an exception is thrown, but are there other situations?
- Would you suggest me to do like Microsoft did: compile the application in Release mode but with symbols so I get optimization at the cost of having approximate line numbers in stack traces?
Explaining question 2: my main concern is about ASP.NET pages. If the page cycle runs well, I wouldn't like any performance decrease to occur so my server can have a better throughput, but when something bad happens (ie. unhandled exception) I want to pay the cost of performance decrease in ordert to get a better stack trace, especially for all the times I had to debug Mono.
My goal is to ease investigating bugs in applications that have been already deployed into their real-world scenario and that log any problem that needs attention.
Thank you for your time.
精彩评论