gpt4 book ai didi

release - 使用V-studio C++项目发布/Debug hell

转载 作者:行者123 更新时间:2023-12-03 16:21:14 25 4
gpt4 key购买 nike

我对此事感到厌倦。我在使用C++的Visual Studio中工作,在尝试发布构建/运行周期之前,在developemnt中走了很远,才发现我的发布构建崩溃。除了破解大量代码以寻找所有潜在的违规者之外,我没有办法解决问题。无论如何,如果我进入“发布”项目属性并为“编辑并继续”启用调试数据库,并且甚至不用在链接器中启用“调试”,则发布版本运行良好。

好的,对于为使我的Release版本正常工作而需要寻找什么样的东西,我深表感谢,但我敢问这个问题:“谁在乎”?我知道,如果链接器实际上与运行时和Windows库的DEBUG版本链接,则该程序可能不会在未安装VStudio的任何系统上运行。但是我在做什么呢……只要让编译器的DEBUG格式设置为“用于编辑并继续(/ ZI)的程序数据库”即可。它几乎不会在应用程序的大小上产生1K的差异,并且如果它不会阻止EXE的正常运行,也许我应该以这种方式设置它?还是我在找麻烦?

-兰迪

最佳答案

“谁在乎?” ...好吧,你应该。

发布版本崩溃的事实表明它存在问题。

如果打开调试符号可对其进行“修复”,那么您将拥有您不了解的魔术修复。为什么要修复它?您可以在安装了软件的每台PC上依靠此修复程序工作吗?

您描述的症状表明您正在某个地方破坏内存(很可能是缓冲区溢出错误),并且添加调试符号会重新排列或填充代码,以便您可以“摆脱它”,因为内存破坏不会碰巧碰到任何重要的东西。

但是您不能真正依靠这样的修复程序。它破坏了您对应用程序的所有信心,有一天会刺痛您(这种修复很容易在您下次编译应用程序时停止“工作”)

您需要找出导致此问题的原因-如果发生不止一次,那么自上次修复该问题以来您还没有学到任何东西。应用程序无法在调试中运行,而不能在发行版中运行,这不是“正常”的事情,因此您必须做错了某些事情-您需要弄清楚它是什么并进行修复,以便将来避免此类错误。 (例如,如果这是缓冲区溢出,则可能只是分配一个“n”个元素的缓冲区,然后访问元素“n”-您只能访问元素0到(n-1)。这很容易修复一次您了解如何编写此类代码...但是您必须付出一些努力才能弄清楚您做错了什么)

关于release - 使用V-studio C++项目发布/Debug hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167885/

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