[b]Rational Purify 使用及分析实例可以见这里[/b]http://www.ibm.com/developerworks/cn/rational/r-cail
但是如果使用VC7,8,9的默认编译和链接设置,那是肯定找不到准确的错误位置的。
为此,需要在VC8(VC7和VC9类似)中一些编译和链接参数要修改如下:
Debug Information Format - Program Database
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102738/8e4da369-0180-3201-9fdd-cb46a4778674.png[/img]
Whole Program Optimization - No
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102740/8be50081-fa40-3fab-a64b-b5761dc7d116.png[/img]
Code Generation, the Basic Runtime Checks - Default
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102741/f05b43bb-2579-39ad-bb6e-9f973bb07cc5.png[/img]
Enable Incremental Linking - no
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102742/979c811c-7908-3e9a-895b-73707f5d7178.png[/img]
Linker, Command Line - 添加一个额外的链接参数/fixed:no
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102746/fb12c131-7785-3197-9e66-db01db92bb74.png[/img]
之后要重新编译
编译出来的pdb文件和exe或dll文件要在一个文件夹中。如果不在要把pdb拷过来。
安装Microsoft Debugger Interface Access SDK,VS2005默认包含。
然后就可以使用Purify了。直接打开运行就可以了。其他具体过程见手册吧,这里说也是浪费功夫。
[b]使用Purify时的注意事项:[/b]
微软提供的STL中,经常会报出UMR errors,基本可以无视。
关于UMR,可能并不是程序的问题,是purify不够智能,很多情况都可能导致这种误判断。所以,这种错误,自己揣摩吧。
如果要分析大程序,会很耗时间。用半个小时都有可能,要耐心。插入指令的过程本来就需要时间。
插入指令的过程可能崩溃,重新编译一次试试,如果不行就向IBM提交bug吧。
关于程序崩溃,最好禁止一些dump模块或功能。
用purify运行会比原来程序慢,如果依赖于时间或定时器,可能行程序为会不一样,特别注意。
但是如果使用VC7,8,9的默认编译和链接设置,那是肯定找不到准确的错误位置的。
为此,需要在VC8(VC7和VC9类似)中一些编译和链接参数要修改如下:
Debug Information Format - Program Database
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102738/8e4da369-0180-3201-9fdd-cb46a4778674.png[/img]
Whole Program Optimization - No
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102740/8be50081-fa40-3fab-a64b-b5761dc7d116.png[/img]
Code Generation, the Basic Runtime Checks - Default
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102741/f05b43bb-2579-39ad-bb6e-9f973bb07cc5.png[/img]
Enable Incremental Linking - no
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102742/979c811c-7908-3e9a-895b-73707f5d7178.png[/img]
Linker, Command Line - 添加一个额外的链接参数/fixed:no
[img]http://zhangyafeikimi.iteye.com/upload/attachment/102746/fb12c131-7785-3197-9e66-db01db92bb74.png[/img]
之后要重新编译
编译出来的pdb文件和exe或dll文件要在一个文件夹中。如果不在要把pdb拷过来。
安装Microsoft Debugger Interface Access SDK,VS2005默认包含。
然后就可以使用Purify了。直接打开运行就可以了。其他具体过程见手册吧,这里说也是浪费功夫。
[b]使用Purify时的注意事项:[/b]
微软提供的STL中,经常会报出UMR errors,基本可以无视。
关于UMR,可能并不是程序的问题,是purify不够智能,很多情况都可能导致这种误判断。所以,这种错误,自己揣摩吧。
如果要分析大程序,会很耗时间。用半个小时都有可能,要耐心。插入指令的过程本来就需要时间。
插入指令的过程可能崩溃,重新编译一次试试,如果不行就向IBM提交bug吧。
关于程序崩溃,最好禁止一些dump模块或功能。
用purify运行会比原来程序慢,如果依赖于时间或定时器,可能行程序为会不一样,特别注意。