示例:日志调试工具EurekaLog(检查内存泄漏)
1、准备工作
1.1、编写目标代码
参考:EurekaLog自带的演示Demo“/Program Files/EurekaLog 6/Delphi7/Demos/GUI/ GUI.dpr”。
1.2、设置编译选项
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”按钮。
3、关闭GUI程序。
2.2、测试结果
1、查看错误日志
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行。
3、双击“Call Stack”视图列表第一行,查看具体代码。
结论:Bug发生在GetMemLeak方法的第1行。