0

我知道我在这里寻找稻草,但这是一个谜……任何指示或帮助都会受到欢迎,所以我呼吁那些比我更聪明的人:

我们仅在发布的二进制文件中显示了崩溃。当二进制文件自行关闭并终止它所依赖的子库时,就会发生崩溃。它的重现能力取决于机器——有些在重现崩溃时是 100% 可靠的,有些根本没有出现问题,有些介于两者之间。崩溃在其中一个子库中很深,并且很可能在可以将瓦砾带入调试器(MSVC 2008 SP1)进行检查时堆栈已损坏。在调试器下运行二进制文件可以防止错误发生,远程调试也是如此,(所有事情)通过 VNC 连接到机器也是如此。我们已尝试安装 Microsoft 驱动程序开发工具包,这样做也可以消除错误。

下一个最好看的地方是什么?在这种情况下,什么工具最好?这听起来像是比赛条件,还是其他什么?

4

4 回答 4

1

您是否尝试过 Rational Purify?我用过这个(大约4-5年前)。然后它有助于跟踪内存错误、堆栈损坏、无效句柄等。

于 2010-05-28T20:40:54.820 回答
1

一起尝试AppVerifierGFlags以查找页面堆损坏。

您可能需要 WinDbg 作为调试器而不是 Visual Studio 来进行调试。

我还推荐这本关于高级 Windows 调试的书,用于跟踪崩溃,例如您遇到的崩溃。

于 2010-05-31T17:47:32.240 回答
1

您是否有机会使用线程池而不是取消或等待未完成的作业对象完成?

于 2010-05-31T23:50:59.707 回答
0

问题是 Visual Studio 下有害标志的设置冲突_SECURE_SCL,导致 DLL 与其依赖项之一之间出现静默 ABI 不兼容。

于 2010-06-02T17:10:18.963 回答