该领域的应用程序间歇性地收到此消息:

我无法在我的机器上重现这一点.我还跟踪了我认为的相关代码,无法找到任何未初始化对象的访问权限.
我从来没有处理过这种问题.
我使用madExcept进行了构建,不幸的是程序在捆绑后不会崩溃.
有关madExcept和EurekaLog的任何意见发现这种事情吗?我从未使用过FastMM.它会对他的情况有用吗?(Delphi 2010)在FastMM中设置的任何建议标志?还有其他建议吗?
Lor*_*tel 12
请注意您尝试阅读的地址非常低.这种错误几乎肯定意味着你试图取消引用nil指针,即使你找不到它.
鉴于你对行为的描述,我怀疑你有一个内存踩踏 - 有些东西在指向对象的指针顶部爆破零.当你改变东西时,你就会移动东西,然后踩踏就会变得无害.
打开范围检查和溢出检查.
请注意,违规对象的大小必须至少为3C0字节 - 这应该有助于缩小范围,大多数对象将小于此值.
我过去所做的只有在现场显示的错误是将记录检查点放入 - 一串显示某些东西的行 - 一个简单的数字序列就可以了.找出崩溃时显示的数字,并且您知道哪些检查点是最后执行的.如果这不能缩小到足够的范围,那么现在你可以重复这个过程.
使用完整的映射文件,您可以识别代码中发生这种情况的确切位置.我希望你有一个完整的图像文件!从引发异常的地址(在您的情况下为$ 007ADE8B)中减去$ 00401000,并且对应于映射文件中的值.
完成后你知道哪个对象是零,从那里通常不会很难弄清楚发生了什么.
发生这种情况的最常见方法之一是构造函数引发异常时.发生这种情况时,析构函数会运行.如果您在析构函数中访问尚未初始化的字段,并执行除调用Free之外的任何操作,那么您将获得这样的异常.