当我关闭一个包含第三方VCL组件的项目时,我能找出是什么导致DelphiIDE停止响应吗?

当我关闭一个包含第三方VCL组件的项目时,我能找出是什么导致DelphiIDE停止响应吗?,delphi,vcl,delphi-2005,Delphi,Vcl,Delphi 2005,我有一个第三方组件,当我尝试关闭一个包含问题组件的表单的项目时,它会导致DelphiIDE停止响应(挂起) 有没有一种简单的方法可以跟踪组件代码中的问题所在 可以合理地说它在组件的析构函数中吗 建议采取哪些措施来缩小病因 madExcept没有显示任何内容,因此它似乎不是访问冲突问题 感谢您的帮助。与查找任何其他问题的方法相同:使用调试器 启动Delphi并打开一个项目。成为德尔福本身。在调试器中运行项目,应该会出现另一个Delphi实例。在新实例中,复制错误。当它挂起时,转到调试器(第一个De

我有一个第三方组件,当我尝试关闭一个包含问题组件的表单的项目时,它会导致DelphiIDE停止响应(挂起)

有没有一种简单的方法可以跟踪组件代码中的问题所在

可以合理地说它在组件的析构函数中吗

建议采取哪些措施来缩小病因

madExcept没有显示任何内容,因此它似乎不是访问冲突问题


感谢您的帮助。

与查找任何其他问题的方法相同:使用调试器


启动Delphi并打开一个项目。成为德尔福本身。在调试器中运行项目,应该会出现另一个Delphi实例。在新实例中,复制错误。当它挂起时,转到调试器(第一个Delphi实例)并暂停执行。查看调用堆栈并找到错误。

简单的方法是填充一些日志,以查看它在何处阻塞。当我遇到这样的问题时,它是运行时或设计时单元中的一个终结部分。卸载BPL时,这些命令将运行。罗布的回答是你能做的唯一明智的事情。用日志消息将这样的问题一分为二可能需要一整天的时间。调试可能需要10分钟。使用调试器。嗨,Warren P,我还想知道它是否在组件注册的终结部分。在finalization部分,释放了一个回调钩子对象,我想知道是否曾经这样做过。组件注册的终结部分何时运行?我已将ShowMessage语句放置在终结部分,但此消息从未出现。那么,钩子对象是否得到释放?嗨,罗布·肯尼迪,谢谢你的及时回复。请原谅我的无知——你能给我更多关于如何“将项目的主程序设置为Delphi本身”的细节吗?另外,您还提到了以下步骤。感谢您的帮助。在delphi ide菜单中,单击RUN->PARAMETERS,将bds.exe放入主机应用程序框。感谢Warren P。此方法在关闭应用程序时是否实际调试ide?运行包含组件的应用程序时不会出现问题,但在关闭应用程序(文件->全部关闭)时,IDE将挂起。当Delphi是宿主应用程序时,您将使用第一个实例的调试器来调试Delphi本身。由于您观察到的问题发生在运行Delphi时,这正是您所需要的。您怀疑组件中的代码导致了问题。该代码在Delphi应用程序的上下文中运行,因此请调试Delphi并找到问题所在。您显然无法访问所有代码,但是如果组件是使用调试信息编译的,调试器应该能够使用它。好的,谢谢Rob。因此,我创建了一个空白应用程序,并将项目的“主机应用程序”设置为Delphi(C:\Program Files\Borland\BDS\3.0\Bin\BDS.exe)。然而,我没有设法让Delphi的第二个实例运行。当我运行项目(F9)时,项目运行(只是显示项目的空白表单),但我没有看到Delphi IDE的第二个实例来重现bug。非常感谢你的帮助