2012-03-07 108 views
1

我经历了很多关于“为什么版本构建失败而不是调试?”的主题,但是我遇到了相反的情况。 这里的发布版本工作正常,但调试模式建立休息。 发生这种情况的可能原因或情况是什么? 任何答复表示赞赏。 在此先感谢。为什么Debug构建失败而Release构建成功?

我们的一个朋友给了对内存释放问题的一些方向..

这是我面临同样的事情... 当我建立在释放模式成功地建立,但是当我尝试建立在失败调试模式/在一个点那里是释放所分配的内存语句就会中断..

代码如下:检查是否缓存为空,并释放它,如果它不是空...

如果(缓冲区){ free(buffer) }

当我继续在该行断点(内如果循环),并检查在调试模式下的值,它显示为“坏指针”。(0x000000处)

但随后问题仍然想干吗,如果环内去即使缓冲区的值为0x000000?

+2

您需要在要张贴特定的错误消息让我们获得更好的感方向:失败的原因可能非常多,随机猜测并不比在黑暗中射击更好。 – dasblinkenlight 2012-03-07 19:25:26

+0

你打算什么意思。最简单的方法是将doem代码放入#ifdef DEBUG块 – Mark 2012-03-07 19:26:10

+0

Captain Obvious说:“这是版本与调试版本之间的区别之一。通常他是对的;) – 0xC0000022L 2012-03-07 19:27:03

回答

0

我不知道你的环境的细节,但是一些调试环境需要额外的步骤来触发错误(例如用无效数据填充freed内存),而发布版本不会,让你有更多机会幸运。

的问题是,你的运气往往当你从测试数据上移到一个真实的环境中运行了....

+0

这是调试vs发行版可执行文件可能出现的问题的一个很好的列表,但不能解释构建失败。问题说“构建中断”。 – 2012-03-07 20:02:25

+0

@BenVoigt,问题中的措辞可以被解释为两种方式。 “调试构建”与“发布构建”。它需要澄清。我希望构建失败会包含错误消息。 – 2012-03-07 20:12:55

0

我建议如果你使用visual studio,可能你对不同的配置文件有不同的配置(链接器,库,路径等):Debug,Release。通常,这个IDE与Visual Studio一样,为这些模式提供了这种类型的GUI配置。