关于vs的release和debug

weixin62 2017-05-31 01:38:06
我们都知道vs生成的时候有2个选项,release和debug。

我们开发的时候一般都使用debug。

据说release是编译器优化过的版本。它不包含调试信息。

问题:
部署到生产环境的时候,我接触到的做法也是使用debug版本。

不知道大家接触到的都是什么做法?release还是debug?
...全文
506 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2017-07-12
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
最典型地,在 DEBUG 中,用条件编译语句自动从编译出来的代码中删除掉了几乎所有的
try
{
   ....
}
catch
{
   .....
}
语句,并且有
Debug.Asser
或者
Debug.Print
或者为debug环境而设计的一系列自动化调试、测试功能。这些在 RELEASE 中都是多余的东西,当然需要去掉这些你主动写出来的代码。 实际上我们开发中绝大部分时间都在研究如何才能更好地自动化测试、如何才能调试出问题,以便用测试来驱动出来开发过程。开发中只有10%的时间在写最终代码,有90%的时间其实都是在研究和修改代码。 现在假设你根本没有主动为调试测试而写代码,你认为自己只要一动手就可以写出从来不修改、从来没有bug的代码,也就是说你写代码是任何人的效率的10倍以上,那么你就不用学习 DEBUG 之下的技术了。而绝大多数人都是需要在工作中慢慢学习如何 DEBUG 的。所以切不可忽视 DEBUG。
在debug的时候尽可能暴露错误信息这个想法是对的。但是如果debug和release执行了不同的代码逻辑,滥用条件编译,则反倒事与愿违,因为生产的代码完全不是测试的代码,不仅仅是没有暴露问题,而是制造了新的问题。那么生产代码其实就是没有测试的代码。
  • 打赏
  • 举报
回复
Debug.Asser --> Debug.Assert
  • 打赏
  • 举报
回复
最典型地,在 DEBUG 中,用条件编译语句自动从编译出来的代码中删除掉了几乎所有的
try
{
   ....
}
catch
{
   .....
}
语句,并且有
Debug.Asser
或者
Debug.Print
或者为debug环境而设计的一系列自动化调试、测试功能。这些在 RELEASE 中都是多余的东西,当然需要去掉这些你主动写出来的代码。 实际上我们开发中绝大部分时间都在研究如何才能更好地自动化测试、如何才能调试出问题,以便用测试来驱动出来开发过程。开发中只有10%的时间在写最终代码,有90%的时间其实都是在研究和修改代码。 现在假设你根本没有主动为调试测试而写代码,你认为自己只要一动手就可以写出从来不修改、从来没有bug的代码,也就是说你写代码是任何人的效率的10倍以上,那么你就不用学习 DEBUG 之下的技术了。而绝大多数人都是需要在工作中慢慢学习如何 DEBUG 的。所以切不可忽视 DEBUG。
  • 打赏
  • 举报
回复
如果你在开发工程中从来自己不注意DEBUG和RELEASE,那么人家的区别对你来说其实就是一种障碍。因为你根本不知道为什么要有区别! 关键还是自己在工程中要首先区别。 在 DEBUG 版本中,也就是开发中,你当然目的是尽可能地让 bug 尽早跳出来。这样你才知道下一步该怎么走,不要带着严重的 bug 去想当然地继续开发。而是要先把主要 bug 扫清了,才进行下一个小时、半天、一天、一周的开发。如果你没有办法让 BUG 尽可能指引自己的行动,那就成了自欺欺人的开发了。 但是 RELEASE版本,则正相反。这个时候你需要尽可能地捕获BUG,然后处理掉,让用户不会感到困扰。这个时候的理念跟开发时当然就是相反的,这个时候你不是尽可能早地让产品 BUG 跳出来了,而是尽可能地把 BUG 跳过去。 只有这样才能保证产品质量。只有知道用完全相反的思维方式来进行工程开发,才叫做产品研发和上线。 那么在你的代码中,就会在所有关键的地方都有“条件编译”代码例如
#if DEBUG
......
#else
.......
#endif
代码。如果没有,你再来纠结vs有的 release和 debug 有什么区别,这就如一个心中无剑的人在耍剑,只能是胡乱比划。
threenewbee 2017-07-09
  • 打赏
  • 举报
回复
和c++不同,CLR程序的release和debug性能差异不大,所以为了简单,也可以发布debug,生产环境直接调试,省得麻烦。
texplore 2017-07-09
  • 打赏
  • 举报
回复
debug可以调试,但运行速度较慢,正式发布用release,参考: http://hovertree.com/h/bjaf/ub4d0d9o.htm
孤独的海啊 2017-06-01
  • 打赏
  • 举报
回复
其实都行。release优化一些,一般应用感觉不粗来。
exception92 2017-05-31
  • 打赏
  • 举报
回复
部署当然是release了。 Debug是你开发测试修改Bug的时候用的。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧