示例:日志调试工具EurekaLog(检查内存泄漏)

来源:互联网 发布:mysql statistics 多 编辑:程序博客网 时间:2024/05/22 12:30

示例:日志调试工具EurekaLog(检查内存泄漏)

1、准备工作
1.1、编写目标代码

参考:EurekaLog自带的演示Demo“/Program Files/EurekaLog 6/Delphi7/Demos/GUI/ GUI.dpr”。

1.2、设置编译选项

clip_image002

Catch Memory Leaks:捕捉内存泄露。

Group son Leaks with its father:合并统计子类的内存泄露到它的父类。

Hide Borland leaks:隐藏Borland工具中VCL单元中的内存泄露

Free all memory:释放所有内存。

Catch leaks exceptions:捕捉内存泄露异常。

2、开始测试
2.1、执行测试

1、运行GUI程序。

2、选择“GetMem Leak”,单击“Execute selected action”按钮。

clip_image004

3、关闭GUI程序。

2.2、测试结果

1、查看错误日志

clip_image006

2、单击“click here”查看明细

说明:顺序从下往上看,第一行为产生BUG的代码的位置。

(1)、“Call Stack”视图

日志提示发生错误的内存地址、单元、方法、行数。依次为:

Address:内存地址。

Module:程序名称。

Unit:产生BUG的单元。

Class:产生BUG的类。

Procedure/Method:产生BUG的过程或方法。

Line:产生BUG的代码在单元的第几行,在过程或方法的第几行。

(2)、示例

本次Bug发生在“MainForm.pas”单元的普通方法“GetMemLeak”中(因为Class为空,所以肯定是普通方法),代码位置在“MainForm.pas”单元的第232行,在方法“GetMemLeak”的第1行。

clip_image008

3、双击“Call Stack”视图列表第一行,查看具体代码。

结论:Bug发生在GetMemLeak方法的第1行。

clip_image010