程序部署时程序异常

时间:2010-11-10 12:00:02

标签: c++ visual-studio

我遇到了大麻烦。请帮忙。 我为我的客户创建了一个游戏。 当我从Visual Studio 2008(在发布和调试配置中)运行它时,它工作正常。

但是,当我运行它的独立exe(或进行安装项目)时,它不能很好地工作。 它工作但它不能完全正常工作,并且问题是一致的(每当我编译并运行独立的exe时,它每次都显示相同的问题)。

我过去也遇到过这个问题,但幸运的是我解决了这个问题。问题解决的方式很不寻常: - 每件事情都完美无缺,然后我在代码中做了一些修改。应用程序开始显示与上述相同的异常行为。然后我开始逐一回滚代码中的修改。 当我从一个类中删除一个特定的变量并且它使用时,游戏开始工作得很好。然后我检查了所有的C ++规则和所有东西,但在我的实现中没有发现任何问题。即使我从Visual Studio运行时每件事都运行正常。 但是我需要这个变量及其在游戏中用于游戏的某些功能。所以,那时我在PUBLIC中声明了变量(之前它是一个受保护的变量),并且每件事都完美无缺。

我很惊讶地看到这种不寻常的行为,每当我声明变量为PROTECTED时就会出现问题,但如果我在Public中复制并粘贴问题就解决了。(该变量仅用于声明它的类中所以不应该有任何问题。)

请帮助我,我再次遇到这个不寻常的问题,这次没有得到任何解决方案。

请告诉我可能导致此问题的原因。 谢谢 塔伦

3 个答案:

答案 0 :(得分:2)

如果它发生在调试器外部,但不在调试器内,您可以使用_NO_DEBUG_HEAP环境变量重现它,如此处所述(在其他地方):http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

设置此变量应该使在调试器下运行的程序更像是在调试器外部运行的程序。

您可以在Visual Studio中设置环境变量,因此它们仅影响调试过程:How do I set specific environment variables when debugging in Visual Studio?

答案 1 :(得分:1)

更改成员变量的可见性可能会更改类的布局,因为C ++仅定义可见性部分内的排序,而不是它们之间的排序。也许您的更改是破坏了一些未经项目重新编译的代码。

答案 2 :(得分:0)

我解决了这个问题。找到解决方案真的非常困难。我在这里写的是如何跟踪这种错误。 您应首先尝试的一些步骤: - 1)不要忽略编译器警告。删除所有类型的警告。 2)程序将变量的状态写入程序关键部分附近的文件中,您怀疑是否会导致错误。 在每一步写下状态。 Examin the Variable,你可能会发现一些un初始化变量或者不正确的类型转换或comarison。

结论: 1)避免与浮点值进行任何比较(等于比较)。 2)如果你正在进行基于时间的比较,请确保你完全关心那个。 3)这个微软的人不是上帝。