Delphi - 用于跟踪传播访问冲突的工具/技术

RBA*_*RBA 5 delphi delphi-xe

即使这听起来很奇怪,我相信每个人在处理具有大量自定义组件的大型应用程序时都会遇到这种问题.在某处生成AV,但应用程序继续执行,稍后会引发错误.我不是在谈论多线程应用程序.关于通用单线程应用程序.

我正在努力找到一个随机引发的错误,甚至我正在使用MadExcept/AQT,调试dcus和断点,但是我无法确定引发它的步骤,以及引发它的步骤.错误正在传播,并且有时会出现TWinControl destroy(Delphi标准TPageControl),有时打开数据集(使用相同的SQL打开和关闭几次).所以堆栈被破坏了,在这种情况下我无法使用它.

我知道这个问题过于局部化了,但我问你还有其他的替代品来跟踪这类错误.

Jer*_*ers 7

我开始使用其他一些内存管理器来查看是否可以更快地强制应用程序的使用模式.

FastMM可以使用FullDebugMode运行(确保将相应的DLL与您的应用程序EXE一起使用).它可以做的一些重要事情:

  • 用模式填充内存(如Arioch'建议)
  • 它们被释放后检查块的修改
  • 应用程序终止时记录内存泄漏
  • 回调某些事件,以便您可以记录内容

在过去,我写了两篇关于FastMM的博客文章,我知道我应该写更多关于它和其他内存管理器的文章.

编辑:关于其他内存管理器的好文章SO用户Eric Grange的内存管理器调查.

出于文档目的,其他一些内存管理器(大多数不适用于您的情况,但我还没有发现包含所有内容的帖子):

在多线程环境中,这些可能很好:

在EXE/DLL设置中,您可能想尝试FastShareMem.

在他的ScaleMM存储库中,AndréMussche确实测试了其他一些内存管理器.

NB:+1; 好问题,我应该找一些时间写一篇关于Delphi内存管理器的后续博客文章(: