gpt4 book ai didi

Delphi:关闭应用程序时如何调试访问冲突?

转载 作者:行者123 更新时间:2023-12-03 15:02:32 24 4
gpt4 key购买 nike

我正在使用 Delphi 6,并且我有一个应用程序,该应用程序在关闭时会产生访问冲突错误。我们使用 EurekaLog,因此我可以获取用于调试的堆栈跟踪,但错误似乎每次都在不同的单元中随机发生,但总是在 finalization 部分中释放某些内容时发生。

我该如何调试它以查看导致问题的原因?我不确定如何开始调试应用程序最终确定时发生的事情。

[编辑:] 抱歉,如果我不清楚,也许更好的问题是:如果我只想逐步完成最终确定部分,那么使用断点开始调试的最佳位置是什么?这些错误似乎出现在我们使用的第三方组件(devexpress dx/cxgrid 库)中,因此我想在 Delphi 开始调用其他单元中的 Finalize 例程之前的最后一点开始在代码中进行调试。

最佳答案

这没什么可说的,但如果我不得不猜测,根据过去的经验......你使用的是包还是 COM 库?如果您有一个作为接口(interface)的全局变量,或者一个其类在 BPL 中声明的对象,并且您在清理对象/接口(interface)之前卸载了 DLL/BPL,那么您将遇到访问冲突,因为您的代码试图在不再映射到应用程序的地址空间中进行 VMT 查找。

检查这一点并确保在最终确定开始之前清理所有此类变量。

关于Delphi:关闭应用程序时如何调试访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com