我正在处理一个非常特殊的问题:我有一个完全在Debug-Buildmode中运行的应用程序,无论我是从MSVC环境运行还是自己启动构建的可执行文件。如果我在Release-Buildmode中构建这个应用程序,当它从MSVC环境运行它时它完全正常工作,但是当我自己启动它时会显示意外行为。
调试和发布模式之间的差异可能是导致此行为的原因,为什么只有在我手动启动可执行文件时才会出现问题?
很难给出代码,因为它是一个非常大的项目,我完全不知道是什么原因导致了这个问题。程序流程基本上是:
boost::thread
)并触发某些事件的回调函数(如果手动执行发布版本,则不会触发这些函数)我能想象的东西可能会导致问题,但我不确定:
std::string
和std::wstring
的使用之间存在不一致。我使用std::wstring(s.begin(), s.end())
从一个转换为另一个,反之亦然。这可能是我遇到问题的原因,如果是,我该如何解决这个问题?我真的很感激一些帮助。提前谢谢。
更新
更新2:
Multithreaded-Debug-DLL
,而不是{ {1}},无论优化设置如何。这似乎是一个很好的成就,但我对这个问题缺乏了解。
答案 0 :(得分:1)
添加日志记录,或删除一些代码块。这应该可以找出问题出现的地方。对于差异,请看这里:
What is the difference between Debug and Release in Visual Studio?
答案 1 :(得分:1)
debug不使用优化在发布模式下有优化,这就是exe大小不同的原因。即使使用相同的代码,所使用的库也是不同的。您可以通过关闭优化选项来进行类似调试的发布。