为什么我的程序只能在调试模式下工作?

时间:2010-08-25 18:35:19

标签: .net c++-cli

我正在使用Visual Studio 2008,带有.net框架,C ++ / CLI。我的程序只能在调试模式下运行(即使从资源管理器运行) - 但在发布模式下它表示程序已停止工作。 (但是如果我在释放模式下按F5它运行正常)所有设置都是相同的。会是什么呢?有人有什么建议吗?

3 个答案:

答案 0 :(得分:4)

我知道旧版本的Visual Studio会在调试模式下将未初始化的变量设置为零。在发布模式下,这些变量可能具有“随机”值。我不知道当前版本的Visual Studio是否会发生这种情况。

未初始化的变量是否可能导致代码出现问题?

答案 1 :(得分:1)

很难就这里可能发生的事情提出一般性主张。有太多东西可能导致问题。

最好的办法是在发布模式下部署应用程序,附加调试器并查看失败的原因。

答案 2 :(得分:0)

一些想法:

  1. 如果您的应用仍然依赖于CRT,则可能在其他没有正确版本的计算机上部署/运行它时遇到问题。使用依赖性walker查看你的发布模式exe,并尝试使用依赖walker进行分析,日志可以解释各种问题。 www.dependencywalker.com

  2. 正如其他人所指出的那样,释放模式会移除许多调试模式到位的安全防护装置。我会尝试用你的可执行文件中的“Windows调试工具”打开gflags - 然后在调试模式下运行程序。这将捕获普通调试模式安全防护装置可能无法捕获的所有类问题。

  3. 最后,如果以上两个解决方案没有帮助,请将“调试”项目设置转换为发布版本。通过更改项目的设置来实现此目的,使其成为“调试”,一次构建一个设置,直到找到使问题出现并在那里工作的设置。