【发布时间】:2011-12-01 09:45:41
【问题描述】:
在使用gdb 时,我在不同的 C 项目中遇到了这个问题。
如果我在没有它的情况下运行我的程序,它可能会在给定事件中持续崩溃,这可能是由于对内存的无效读取。我尝试使用gdb 对其进行调试,但是当我这样做时,崩溃似乎永远不会发生!
知道为什么会发生这种情况吗?
我在 Windows 上使用 mingw 工具链。
【问题讨论】:
-
是的,这听起来像是竞争条件或堆损坏或其他通常导致 Heisenbugs 的原因。问题是您的代码可能在某些地方不正确,但即使被调试的应用程序做了一些有趣的事情,调试器也必须正常运行。在应用程序上尝试 Valgrind。由于您使用的是 MinGW,因此您的应用程序很可能会在 Valgrind 可以运行的环境中编译。
-
@STATUS_ACCESS_DENIED 他如何在 Windows 上试用 Valgrind?
-
@EmployedRussian 你不能,但如前所述,如果你没有系统特定的库,在 Linux 下编译一个 mingw 项目非常容易
-
@Ginn: 确实 :) ...如果这适用于您的情况,我也可以将其作为正式答案。
-
@STATUS_ACCESS_DENIED 请这样做