使用inspxe-cl 命令行进行内存和线程检查

Intel® Inspector XE 2011 是新一代的内存和线程检查工具,含图形界面以方便分析结果。但有时我们基于二点原因需要使用命令行来分析:

1.含图形界面的工具增加应用程序的负载

2.用户需要做自动(回溯)内存和线程分析的工作(Run Script),及产生报告

准备工作:

Windows环境下:Command Prompt > $Inspector  XE 2011\inspxe-vars.bat

Linux环境下: source $inspector_xe_2011/inspxe-vars.sh

命令行句法

inspxe-cl action [action-options] [global-options]

解释

<action> 表示动作,通常每个命令都含一个动作。可以是下列之一:collect, command, create-suppression-file, finalize, help, import, knob-list, report, version

[action-options] 使用动作参数,通常每个动作可带一个,多个或不带命令参数。有下列几种:auto-finalize | no-auto-finalize, compiler-root, csv-delimiter, discard-suppressed-problems | no-discard-problem, executable-of-interest, filter-include, format, mrte-mode, previous-result, report-output, result-dir, search-dir, sort-asc, sort-desc, suppression-file, suppressions 等

[global-options] 修改此参数,作用于所有的动作。有下列几种:log-dir, option-file, quiet, user-data-dir, verbose

<application> 表示被分析的应用程序

[application-options] 是指应用程序的参数

应用实例
 

    1. 检查版本号:inspxe-cl -version

 

    1. 列出分析类型可附加的的参数:inspxe-cl –knob-list mi2;  inspxe-cl –knob-list ti3

 

    1. 仅仅检查内存泄漏,结果放在指定目录:inspxe-cl -collect mi1 -result-dir myRes -- ./tachyon.find_and_fix_memory_errors dat/simpleballs.dat

 

    1. 产生suppression文件 mysup.sup ,根据以上结果:inspxe-cl  -create-suppression-file mysup -result-dir myRes

 

    1. 利用suppression 文件mysup.sup, 过滤掉已知错误:inspxe-cl -collect mi2 -suppression-file mysup -result-dir myRes1 -- ./tachyon.find_and_fix_memory_errors dat/simpleballs.dat (注:这个功能特别有用,在测试过程中特别关注新发现的错误。)

 

    1. 报告错误:inspxe-cl -report summary -r myRes; inspxe-cl -report problems -r myRes1

 

    1. 产生错误输出的格式,可以是csv, text, xml :inspxe-cl -report problems -r myRes1 -format xml

 

    1. CSV格式的间隔(缺省是逗号):inspxe-cl -report problems -r myRes -format csv -csv-delimiter=";"

 

    1. 检查线程错误:inspxe-cl -collect ti3 -result-dir myRes2 -- ./tachyon.find_and_fix_threading_errors dat/simpleballs.dat

 

    1. 输出线程错误结果:inspxe-cl -report problems -r myRes2



 以上这些例子虽不能涵盖命令行的全部功能,但也基本够用。

二点说明:

1.  Inspector XE 不支持attach to process模式。

2. 如果Launch的不是application, 而是脚本文件。用户必须指定感兴趣的模块。如: inspxe-cl -collect mi2 -executable-of-interest myprogram -- test.sh

3. 使用filter mode (运行时filter而不是结果filter)

inspxe-cl -collect mi2 -module-filter-mode=exclude -module-filter=3rd-party-dll -- your-program  ; will not analyze dll 

inspxe-cl -collect mi2 -module-filter-mode=include -module-filter=your-program -- your-program ; only analyze your executable

Pour de plus amples informations sur les optimisations de compilation, consultez notre Avertissement concernant les optimisations.