Kie*_*ran 6 delphi access-violation
我正在使用Delphi 6,我有一个应用程序,当关闭时会产生访问冲突错误.我们使用EurekaLog,因此我得到了用于调试的堆栈跟踪,但错误似乎每次都在不同的单元中随机出现,但总是在最终化部分中释放某些内容时.
我怎样才能调试这个以查看导致问题的原因?我不确定如何开始调试应用程序最终确定时发生的事情.
[编辑:]对不起,如果我不清楚,或许更好的问题是:如果我只想完成最终确定部分,那么开始使用断点进行调试的最佳位置是什么?这些错误似乎出现在我们使用的第三方组件(devexpress dx/cxgrid库)中,所以我想在Delphi开始在其他单元中调用finalize例程之前的最后一点开始调试我的代码.
这没什么可说的,但如果我不得不猜测,根据过去的经验……你使用的是包还是 COM 库?如果您有一个作为接口的全局变量,或者一个其类在 BPL 中声明的对象,并且您在清理对象/接口之前卸载了 DLL/BPL,那么您将遇到访问冲突,因为您的代码试图在不再映射到应用程序的地址空间中执行 VMT 查找。
检查这一点并确保在最终确定开始之前清理所有此类变量。