【发布时间】:2013-08-28 08:57:22
【问题描述】:
我的一个程序中有一个奇怪的竞争条件,导致它仅在发布模式和 OUTSIDE Visual Studio 环境中崩溃。
如果我在 Visual Studio 中使用 F5(发布或调试)以发布模式启动此过程,它就可以正常工作。
如果我创建带有调试信息的发布副本,它不会崩溃。
我想知道如何调试这样的问题.. 为什么它没有在 Visual Studio 中崩溃?即使在启动它的发布版本时,Visual Studio 是否会减慢可执行文件的速度?
【问题讨论】:
-
听起来好像在某些时候,您正在调用未定义的行为
-
如果它只发生在发布中,那么听起来你没有初始化所有变量。大多数编译器将在调试模式下对所有未初始化的变量进行零初始化,但在发布模式下不做任何事情(基本上使它们随机化)。提高编译器的警告级别并修复所有警告(尤其是那些与未初始化变量有关的警告)。
-
当你说“竞态条件”时,你究竟看到了什么让你怀疑竞态条件?
-
您应该尝试看看您是否可以对您的代码进行一些静态分析。这应该告诉你所有关于未初始化变量和其他内存问题的信息。
-
我不明白为什么这被认为过于宽泛。 “我想知道如何调试这样的问题”似乎是一个完全有效的问题。
标签: c++ windows visual-studio-2010 visual-studio debugging