Windows应用程序在调试时不会崩溃,但崩溃否则

问题描述:

我有一个调用外部.dll的Windows应用程序。过了一段时间,引起了我的注意的致命错误与用户编组有关。网上有一个源代码,那个特定的错误是我将目标更改为x86而不是AnyCPU。我这样做了,现在每当我让应用程序运行时,它都会退出调试模式并使应用程序崩溃。但是,如果我在.dll调用之后立即设置了一个中断点,并逐步遍历每一行,直到再次接收到应用程序的控制权,则它不会崩溃。有什么具体的可能导致这个?有没有一个调试这个问题?Windows应用程序在调试时不会崩溃,但崩溃否则

谢谢!

+0

尝试在项目属性中启用非托管代码调试并查看反汇编的代码。祝你好运... – Mehrdad 2012-08-14 21:06:39

+0

崩溃处理方式的差异可以归结为[调试时窗口窗体处理异常的方式不同](http://*.com/a/6734767/113141)? – Justin 2012-08-14 21:17:00

解决问题的步进代码通常是原始代码中计时问题的症状。如果外部资源异步加载,它将不会显示在调试器中当前线程的堆栈上,但可以被调用。逐级代码会导致流程中的延迟。

谢谢大家给你的建议!幸运的是,我最终完成了它的工作(对其工作原理了解最少),但将构建目标更改为特定x86机器而不是“AnyCPU”。这是由网站建议,不能再找到:\希望这可以帮助其他人比遇到类似的问题!

我认为这种事情最常见的原因是未初始化的变量。他们可以选择内存中的任何内容,并且调试器的存在可以轻松更改堆栈中未使用部分的内容 - 在调用下一个例程时将成为局部变量的内存。检查DLL代码。

请注意,您的“修复”让我更怀疑这是真正的答案。

(再有就是也与调试出了问题真的疯了的情况下。很久以前,我打在调试程序有没有问题,加载无效值段寄存器或者如果你是单步执行的情况。)