我在一家商店工作,维护一个相当新的应用程序。该应用程序仍有其公平的错误,每天都有大量的门票。我们使用这些票据给出的错误信息没有它可能有用,因为应用程序是在发布模式下编译的,我读到的更小更快(有意义)。
将.NET应用程序部署到以调试模式编译的生产是否有任何后果?我希望它会慢一点,但我已经看到差异是名义上的。这可以向我们保证,当我们在故障单上出现错误时,我们会有与这些错误相关联的行号,这当然会使调试变得更加容易。
任何会阻止你这么做的重大危险信号?我的任务是研究这种可能性。所以感谢任何反馈。
答案 0 :(得分:3)
在DEBUG而不是Release模式下部署您的应用会降低您的性能。当然可以做出妥协。我会建议以下之一:
答案 1 :(得分:1)
我的经验是,如果您正在考虑桌面(winforms / WPF)应用程序,这可以正常工作,但在任何情况下都不应该尝试使用asp.net应用程序。
答案 2 :(得分:1)
您标记了此[vb.net],您无法发送使用WithEvents的调试版本或程序。如果没有连接调试器,WeakReference实例会有一个已知的afaik未解决的内存泄漏。它们用于支持编辑+继续。
您可以做的第一件事就是将.pdb文件与您的应用一起发送。在C#IDE中,使用Project + Properties,Build选项卡,Advanced,将Debug Info更改为“Full”。您将在异常堆栈跟踪中获取行号信息。
您不能完全信任行号,JIT优化器会移动代码以使其执行得更快。内联短函数,如属性getter。您可以在与禁用JIT优化程序的可执行文件相同的目录中添加yourapp.ini file
[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0
答案 3 :(得分:0)
这一切都取决于您的生产环境,业务和性能要求的重要性。没有什么是严格的。
答案 4 :(得分:0)
部署Debug版本对我来说是一个红旗,虽然它并非闻所未闻。这是桌面还是服务器应用程序?任何失败的Debug.Assert调用都可能是一个问题,因为那些可以关闭你的应用程序和/或导致调试器连接(VS.NET不是唯一的调试器,如果我记得.net fx安装了一个轻量级的调试器) 。虽然这对于开发者来说可能有所帮助,但它肯定会让正常人感到困惑。
一个运行良好的选项不是调试版本,而是确保您的错误报告机制包括(显示或记录)任何抛出的exceptions的堆栈跟踪信息。这有助于在不需要pdbs的情况下很好地查明错误。
答案 5 :(得分:0)
如果这是一个桌面应用程序,您可以与少数客户一起尝试,但请注意其他答案中给出的建议。尝试更多强力用户或有很多问题的人可能愿意做志愿者。