大家在wince开发过程会发现跟PC上的开发的差距很大,一些在PC上的调试技巧之类的辅助功能都无法使用,比如内存泄露的检测等,那么这篇文章就是告诉大家如何使用wince上的内存检测工具帮助大家找出内存泄露。这里给大家介绍的软件为Application Verifier,是微软自己开发用于监测wince系统的内存和一些内核对象未释放造成内存泄露的辅助工具。该工具只需要在wince上运行指定监控的程序或dll,程序在退出时自动生成日志文件,通过pc端的工具进行日志分析就可以看出泄露的地址。好了不多说了,下面将用图文的方式介绍如何使用该工具(其实这个教程老早就写好了,只是在公司内部流传,最近开始试着写写blog所以也将此拿出来分享下)。
Application Verifier PC端 下载地址:http://download.csdn.net/detail/flyound/4826599
Application Verifier(wince5.0)下载地址:http://download.csdn.net/detail/flyound/4826558
Application Verifier(wince6.0)下载地址:http://download.csdn.net/detail/flyound/4826546
先安装PC端的软件,安装后,到安装目录下的C:\Program Files\Application Verifier for Mobile 5.0\Desktop (安装到其他盘的自己找出目录然后进入DeskTop目录)目录,将AppVerifCE.exe应用程序创建一个快捷方式到桌面方便以后使用。
使用步骤1:
将wince5.0或wince6.0压缩包内的其他所有文件(除Application Verifier.msi外)拷贝至需要监控的window ce机器上的windows目录下。
使用步骤2:
使用AppVerifCE.exe(上面已创建过快捷方式者,可直接运行快捷方式)进行连接到需要监控windows CE机器(wince6.0的机器可能链接不上,可以直接将在wince的windows目录上运行刚才解压的程序进行设置,然后通过本工具进行分析日志文件)。
使用步骤图解:
如上图设置完成后,即可在目标机器上运行检测的程序,检测时需叫所有功能测试到,比如test.exe,我们需要对每种操作进行检测,一般每个功能测试两遍即可知晓有没内存泄漏的存在,在不需要检测时,一定要让程序正常退出,否则可能造成检测不准(因为很多程序在退出时会对很多内存进行释放操作)。
通过Application Verifier在wince端生成日志文件后,我们将文件拷贝到PC上通过PC端的工具进行日志分析,我们就可以定位出泄漏地址的代码行位置了,这里有个前提条件,那就是需要我们在编译程序时将程序的调试信息打开,VS2008设置选项配置方法如下:
1.配置属性 => C/C++ => 常规 => 调试信息格式 => 程序数据库(/Zi)
2.配置属性 => 链接器 => 调试 => 生成调试信息 => 是(/DEBUG)
这样就设置完成了,那么我们就可以用windows ce remote process explorer这个工具来通过地址定位代码了(其实也可以用map之类的手动计算函数偏移量来确定,这个方式很麻烦),工具下载地址:http://download.csdn.net/detail/flyound/4827087
下面开始上图:
使用ProcessExlporer For Wince工具上的Crack Address功能定位代码行(崩溃地址和泄漏地址同样方法查找代码行):
是不是显示出了泄漏代码位置了,有时候定位的位置可能会相差1,2行左右,因为Release会优化些代码,所以定位不会100%准确。