gpt4 book ai didi

c++ - 当程序在调试时正确运行但不是?

转载 作者:IT老高 更新时间:2023-10-28 21:37:01 28 4
gpt4 key购买 nike

Possible Duplicate:
Common reasons for bugs in release version not present in debug mode

有时我遇到这样奇怪的情况,程序在正常运行时运行不正确,它会弹出终止对话框,但在调试时正确。当我想使用调试器查找代码中的错误时,这确实让我感到沮丧.

你有没有遇到过这种情况,为什么?

更新:

为了证明有逻辑原因会导致这种令人沮丧的情况:

我认为一个很大的可能性是堆访问权限。我曾经写过一个分配一个小缓冲区的函数,但后来我走出了边界。它将在 gdb、cdb 等中正确运行(我不知道为什么,但它确实运行正确);但是在正常运行时异常终止。

我正在使用 C++。

我不认为我的问题与上述问题重复。

那是 Release模式和 Debug模式之间的比较,但我的是调试和非调试之间的比较,其中有一个词 heisenbug,正如许多其他人指出的那样。

谢谢。

最佳答案

您有一个 heisenbug .

调试器可能正在初始化值

某些环境将变量和/或内存初始化为已知值,例如在调试版本中为零,而不是在发布版本中。

版本可能会通过优化构建

现代编译器很好,但可能假设优化代码的功能与非优化代码不同。 编辑:现在,编译器错误很少。如果您发现自己认为自己有一个,请先用尽所有其他想法。

heisenbugs 可能还有其他原因。

关于c++ - 当程序在调试时正确运行但不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2201589/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com