部署应用程序的Debug版本的含义?

时间:2010-09-15 02:11:30

标签: c# security debugging deployment compiler-construction

我想知道决定部署一个在Debug(带有调试符号表)中构建的应用程序的优缺点,并且与释放符号的Release模式相反。还有其他一些排列,例如打开Debug的优化和打开Release的调试符号。

我认为可能关注的领域是(你可能认识其他人):

  • 安全
  • 效果
  • 稳定性

但我不是专家,所以我不确定部署Debug应用程序会对这些区域产生什么影响。

它可能不相关,但是这个应用程序是一个C#.Net框架3.5(管理数据库的业务应用程序)。这是(付费)客户的申请。

选择这样做有明显的优点或缺点吗?

2 个答案:

答案 0 :(得分:4)

安全性:如果不进行模糊处理,调试和发布托管代码(如C#)已经很容易受到攻击。通过混淆保护您的代码,否则它很容易被复制,被盗,加密等任何安全性破解(在这种情况下,您提到了Terrabytes的数据为客户)。我回答了obfuscation question here。此外,制作一个密钥文件并签署您的程序集。

性能:调试速度极慢,不应该发布调试版本。如果使用AJAX会使每个页面请求更加重,因为调试版本更大。将调试标志设置为假应用程序配置文件,我在此other question中包含了一些类似的提醒。

稳定性:调试使用更多内存,如果服务器内存不足,则可能不太稳定。拥有调试dll的一个优点是,如果应用程序失败,您的pdb文件就已经存在了。最佳实践是将调试版本保持在您构建的每个发行版本的安全位置。如果客户要求您进行调试,请备份其文件夹并将其替换为相应的调试程序集。

我开发了一个归档产品,该产品也存档了Terrabytes数据,我不建议部署调试版本并确保它已被删除,并且使用Dotfuscator加密文件加密方法。

答案 1 :(得分:1)

您还可以为他们提供包含调试信息的发布版本。