gpt4 book ai didi

visual-studio - 为什么在 .NET 中分发应用程序的 Debug 版本是一种不好的做法?

转载 作者:行者123 更新时间:2023-12-04 22:36:39 31 4
gpt4 key购买 nike

阅读this question ,在第一条评论中,@Cody Gray 说:

Erm, you know that you're not supposed to redistribute the "Debug" version, right?



我很担心。在 Visual Studio 中,我通常在 Debug 模式下开发我的应用程序,如果我需要分发可执行文件,我所做的就是压缩 .exe并且需要 .dll文件(在 bin\Debug 文件夹中)。

为什么这是一个坏主意?

这样做和在 Release 模式下做完全相同的事情有什么区别?

编辑:
我之前问过这个问题,但我只是想编辑它以添加不同之处:

使用时 Debug.Assert在测试它的代码中,并在 Release模式下编译,所有这些行都消失了,所以这可能是另一个区别。

最佳答案

这取决于您使用哪种语言来开发您的程序。当您使用 C++ 时,您将获得/RTC 的开销和 Edit + Continue 支持。如果您使用递归,它们会大大减慢生成的代码的速度,并且很可能使您的应用程序在 StackOverflow 早期崩溃。如果没有调试器,您可以从检查代码中获得的运行时异常可能很难诊断。

如果您使用 VB.NET,那么当您在没有调试器的情况下使用 Debug 版本时,您将很容易出现不可插入的内存泄漏。其 Edit + Continue 支持代码中的一个缺陷会导致 WeakReference 为包含 WithEvents 事件的类的每个实例泄漏。您的应用程序最终会因 OutOfMemory 异常而终止。

如果您使用 C#,那么不会出现任何问题,只是阻止 JIT 编译器生成优化的机器代码,并且垃圾收集效率不高。您的程序将运行缓慢并消耗不必要的内存。这也适用于 VB.NET 和 C++/CLI。

在编写代码时,性能通常是程序员最重要的考虑因素。因此,发布调试版本有点亵渎神明。然而,大量程序通常完全受到 I/O、磁盘、网卡或 dbase 服务器的限制。在这种情况下,原始 CPU 性能无关紧要。

关于visual-studio - 为什么在 .NET 中分发应用程序的 Debug 版本是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101458/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com