【问题标题】:Release build not working when run without debugging in VS2010在 VS2010 中未经调试运行时发布版本不起作用
【发布时间】:2011-08-15 18:37:45
【问题描述】:

我遇到了以下问题:

我使用 VS2010 用 C++ 编写程序。在 VS 中使用/不使用调试运行时,调试构建工作正常。当我直接启动构建的可执行文件时,它也可以工作。

在 VS 中运行调试时发布构建工作,当我直接启动构建可执行文件时。

不幸的是,当我在 VS 中运行发布版本时,程序无法运行 - 没有调试 -。创建窗口,然后程序快速崩溃(没有任何错误消息)。由于它在没有调试的情况下运行时崩溃,我不知道如何确定导致问题的原因。

任何想法可能导致这种情况?谢谢:)

【问题讨论】:

  • 那么,直接通过 windows 资源管理器启动 release-build 可执行文件和在 Visual Studio 中不调试就运行它有什么区别?

标签: c++ visual-studio-2010 debugging build release


【解决方案1】:

您似乎很可能遇到了某种内存错误/损坏,而这些错误/损坏恰好在调试器中正常工作。

您可以尝试使用 couts 来隔离它死亡的距离/位置,或者尝试使用 Purify 之类的工具(如果您可以移植到 Linux,则可以免费使用 valgrind)。

【讨论】:

  • 移植到不同的操作系统是一种激进但可能非常有效的调试方式:)
  • 谢谢,我试试 couts :) 但是直接通过 Windows 资源管理器启动 .exe 和在 Visual Studio 中不进行调试就运行有什么区别?直接通过 Windows 资源管理器运行时,发布版本确实可以正常工作。
  • @malymato 不同之处在于内存的初始化。如果您的程序正在使用未初始化的变量,则默认内存内容可能会导致不同的行为。
  • 已解决,结果确实是我有未初始化的变量。实际上它是一个布尔变量。程序依赖于设置为 true 的变量。我忘了初始化它。当我通过 VS 启动程序时,VS 将变量初始化为 false。所以它没有用。当我直接启动 .exe 时,变量未初始化,所以它只包含一个随机值,当然它被评估为 true,所以它确实有效。
猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多