用于识别PowerBuilder内存泄漏问题的工具

时间:2013-05-28 10:13:30

标签: testing memory memory-leaks powerbuilder

我们的应用程序是在PowerBuilder中开发的。我们正面临该应用程序中的内存泄漏问题。是否有任何工具或技术可以找到内存泄漏?

2 个答案:

答案 0 :(得分:0)

曾经有一个实用程序(Brian Dick的CDMatch)可以打开PowerBuilder分析文件(使用PowerScript函数),识别已经被垃圾收集的对象,获取它们唯一的对象id并在跟踪中找到每个对象的实例化。查找已创建但未显式销毁的对象是您可以在PowerScript中控制的内存泄漏类型。几年前,这个工具所用的网站很黑了。

我通常发现懒惰的编程只是假设垃圾收集会及时处理清理,但是这个函数或事件被用在一个大循环中,在所有垃圾堆积之前都不允许清理造成了问题。

所以,你可以:

  • 尝试按上述方式推出自己的分析工具
  • 在战略位置抛出显式的GarbageCollect(),看看是否“解决”了你的问题
    • 如果是,请使用它作为起点来追踪您的问题,并显式DESTROY实例或重用现有实例;它会一直表现得更好)
祝你好运,

特里。

答案 1 :(得分:-1)

几个工具可能有助于查明内存泄漏,但 none专用于PB

  • DPus Light(有希望的工具,但不幸的是,自2011年以来没有发展)专注于GDI和内存泄漏
  • Visual Leak Detector针对VC ++,因此可以帮助PBNI扩展(并且可以用于PB本身,因为它是用VC ++编译的,但是......)
  • Sys Internals Process MonitorProcess Hacker这样的工具也可以通过列出应用程序拥有的句柄(文件,GDI资源......)来提供帮助

在PB端,一个解决方案可能是在调试模式下运行应用程序并启用实时调试并添加一种方式(窗口上的临时按钮)来调用{{1在调试器视图中,您可以查看DebugBreak()视图,该视图可以显示是否存在可疑数量的对象,但它只能提供线索,无法分辨创建的位置或原因在那里。