代码之家  ›  专栏  ›  技术社区  ›  Mario Narcis Radoi

使用调试模式而不是发布模式将应用部署到生产环境?

  •  6
  • Mario Narcis Radoi  · 技术社区  · 14 年前

    我在一家商店工作,那里有一个相当新的应用程序。这个应用程序仍然有相当多的漏洞,每天都有大量的罚单。这些票证给我们的错误信息没有它可能的有用,因为应用程序是在发布模式下编译的,我读到的是更小更快的(有意义)。

    将.NET应用程序部署到在调试模式下编译的生产环境有什么影响吗?我原以为会慢一点,但我读到的差别是名义上的。这可以保证当我们得到错误的票,我们有与这些错误相关联的行号,当然,这使调试更容易。

    6 回复  |  直到 14 年前
        1
  •  3
  •   bechbd    14 年前

    在调试模式而不是发布模式下部署应用程序将降低性能。当然可以妥协。我建议你做以下选择之一:

    • 看看如何在global.asax中将全局错误处理程序添加到OnError-
    • this 斯科特·汉斯曼的一个建议
        2
  •  1
  •   Joel Coehoorn    14 年前

        3
  •  1
  •   Hans Passant    14 年前

    您标记了这个[vb.net],您不能发送调试生成或与事件一起使用的程序。如果没有附加调试器,则WeakReference实例存在已知且未解决的内存泄漏。它们用于支持编辑+继续。

    你可以做的第一件事就是把.pdb文件和你的应用一起发布。在C#IDE中,使用Project+属性,Build选项卡,Advanced,将Debug Info更改为“Full”。您将在异常堆栈跟踪中获得行号信息。

    您不能完全信任行号,JIT优化器将移动代码以使其执行更快。以及内联短函数,如属性getter。您可以添加 yourapp.ini file

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=1
    AllowOptimize=0
    
        4
  •  0
  •   Sheen    14 年前

    这完全取决于您的生产环境、业务和性能要求的重要性。没有什么是严格的。

        5
  •  0
  •   dkackman Srinivas Kokkula    14 年前

    Debug.Assert 失败可能是一个问题,因为这些可能会关闭应用程序和/或导致附加调试器(VS.NET不是唯一的调试器,如果我记得.NET fx安装了轻量级调试器)。作为一个开发人员,这是很有帮助的,但对于一个正常人来说,这肯定会让人困惑。

    一个有效的选项是,而不是调试构建,确保您的错误报告机制包括(显示或记录)任何抛出的堆栈跟踪信息 exceptions . 这有助于很好地查明错误,而不需要pdb。

        6
  •  0
  •   JeffO    14 年前

    推荐文章