delphi – 如何跟踪仅在调试器下发生的间歇性崩溃,但是没有被它
我有一个奇怪的间歇性崩溃,只有在某些情况下我才能解决,而且我正在寻求如何解决它的建议.
错误 在显然随机的点上,Windows显示“[App]已停止工作”对话框.它是ntdll.dll中的APPCRASH,异常代码4000001f,异常偏移量000a2562.这里变得棘手:只有在调试器下运行应用程序时才会出现这种情况.但是,调试器不会捕获此异常,并且在Windows显示此对话框时,IDE没有响应.正常运行时不会发生此错误,即不在IDE调试器中. 我无法在调试器外重现它,所以我无法运行程序并在它已经崩溃时附加.当Windows显示此对话框时,我无法暂停执行,因为IDE没有响应.我可以手动跟踪代码行以查看它出现的位置.有几个,它发生的地方显然是随机的.有一段时间,它在创建一个线程时显示一个窗口(或新表单)一段时间. 编辑:我已将其跟踪到IDE:如果我暂停一个断点并单击“线程状态”选项卡,程序将立即使用上面的对话框崩溃,即使它理论上已暂停.在这种情况下,IDE仍然保持响应.这真的很奇怪. 更多信息 我刚刚将我的开发环境移到了VMWare Fusion.该错误还发生在我的新计算机上运行来自旧(本机Windows)计算机的构建;在旧计算机上使用相同的EXE文件时不会发生这种情况.这让我想知道它是否与Fusion或我的新设置中的某些内容有关. 我在跑步: > OSX Lion 10.7.1上的WMWare Fusion 3.1.3上的Windows 7 Pro x64,全部更新. Fusion在我的一个屏幕上以“全屏”模式运行. 解决方法
这具有内存损坏的所有标志.它仅在您在特定环境下运行时出现,并且每次都出现在不同的位置.两种经典症状.
我知道调试它的最好方法是下载完整的FastMM并在启用完整调试选项的情况下运行. 如果这没有帮助,那么您将逐渐删除部分代码,直到您可以隔离问题为止. 我在D2010中看到的另一个问题是将本地类定义(即类内部类)与泛型混合时的问题.生成的代码很好,但是调试DCU是错误的,当单步执行代码时,调试器跳转到错误的文件并在不久之后死掉.您似乎没有完全相同的问题,但IDE死亡中有相似之处. 最后,我建议您怀疑自己的代码而不是VMware.总是很容易责怪其他事情,但根据我的经验,每当我这样做时,最终总是我的代码! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |