鸦鸦 发表于 2017-5-26 10:31:39

在VS2005中使用IBM Purify的注意事项

Rational Purify 使用及分析实例可以见这里http://www.ibm.com/developerworks/cn/rational/r-cail

但是如果使用VC7,8,9的默认编译和链接设置,那是肯定找不到准确的错误位置的。
为此,需要在VC8(VC7和VC9类似)中一些编译和链接参数要修改如下:
Debug Information Format - Program Database
http://zhangyafeikimi.iteye.com/upload/attachment/102738/8e4da369-0180-3201-9fdd-cb46a4778674.png
Whole Program Optimization - No
http://zhangyafeikimi.iteye.com/upload/attachment/102740/8be50081-fa40-3fab-a64b-b5761dc7d116.png
Code Generation, the Basic Runtime Checks - Default
http://zhangyafeikimi.iteye.com/upload/attachment/102741/f05b43bb-2579-39ad-bb6e-9f973bb07cc5.png
Enable Incremental Linking - no
http://zhangyafeikimi.iteye.com/upload/attachment/102742/979c811c-7908-3e9a-895b-73707f5d7178.png
Linker, Command Line - 添加一个额外的链接参数/fixed:no
http://zhangyafeikimi.iteye.com/upload/attachment/102746/fb12c131-7785-3197-9e66-db01db92bb74.png
之后要重新编译

编译出来的pdb文件和exe或dll文件要在一个文件夹中。如果不在要把pdb拷过来。
安装Microsoft Debugger Interface Access SDK,VS2005默认包含。
然后就可以使用Purify了。直接打开运行就可以了。其他具体过程见手册吧,这里说也是浪费功夫。


使用Purify时的注意事项:
微软提供的STL中,经常会报出UMR errors,基本可以无视。
关于UMR,可能并不是程序的问题,是purify不够智能,很多情况都可能导致这种误判断。所以,这种错误,自己揣摩吧。
如果要分析大程序,会很耗时间。用半个小时都有可能,要耐心。插入指令的过程本来就需要时间。
插入指令的过程可能崩溃,重新编译一次试试,如果不行就向IBM提交bug吧。
关于程序崩溃,最好禁止一些dump模块或功能。
用purify运行会比原来程序慢,如果依赖于时间或定时器,可能行程序为会不一样,特别注意。
页: [1]
查看完整版本: 在VS2005中使用IBM Purify的注意事项