1 つのツールを実行するだけで違いが出るのでしょうか? はい 多くの場合 複雑なバグを発見して アプリケーションの安定性を向上させることができます このガイドでは インテル Inspector XE 解析ツールを使用して コードの問題を排除する方法を説明します これにより コードの信頼性が向上し 開

Similar documents
インテル(R) Visual Fortran コンパイラ 10.0

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

インテル® Parallel Studio XE 2013 Windows* 版インストール・ガイドおよびリリースノート

NetworkVantage 9

Parallel Studio XE Parallel Studio XE hotspot ( )

Microsoft Word - VisualC++利用法2.doc

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

スレッド化されていないアプリケーションでも大幅なパフォーマンス向上を容易に実現

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows 日本語版 : インストール・ガイド

for (int x = 0; x < X_MAX; x++) { /* これらの 3 つの行は外部ループの自己データと * 合計データの両方にカウントされます */ bar[x * 2] = x * ; bar[(x * 2) - 1] = (x - 1.0) *

内容 インテル Advisor ベクトル化アドバイザー入門ガイド Version インテル Advisor の利用 ワークフロー... 3 STEP1. 必要条件の設定... 4 STEP2. インテル Advisor の起動... 5 STEP3. プロジェクトの作成

インテル® Fortran Studio XE 2011 SP1 Windows* 版インストール・ガイドおよびリリースノート

インテル® Parallel Studio XE 2013 Linux* 版インストール・ガイドおよびリリースノート

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以

インテル® Parallel Studio XE 2015 Composer Edition for Linux* インストール・ガイドおよびリリースノート

目次 1 はじめに 製品に含まれるコンポーネント 動作環境... 4 オペレーティング システム... 4 Microsoft Visual Studio* 製品 製品のダウンロード 製品版をインストールする場合 評価版を

実習を行う上での心構えについて

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

1. 信頼済みサイトの設定 (1/3) この設定をしないとレイアウト ( 公報 ) ダウンロードなどの一部の機能が使えませんので 必ず設定してください 1 Internet Explorer を起動し [ ツール ]-[ インターネットオプション (O)] を選択します 2 [ セキュリティ ] の

(6) コンボドライブのドライブ文字の変更 コンピュータの管理 ウィンドウの右下側フレームの CD-ROM 0 DVD (E:) と書かれた箱 ( 図 02-2) にマウスのポインタを合わせ, 右ボタンをクリックしてメニューを表示する メニューから ドライブ文字とパスの変更 (C)... を選択する

クライアント証明書導入マニュアル

Source Insight

AN1609 GNUコンパイラ導入ガイド

クラウドファイルサーバーデスクトップ版 インストールマニュアル 利用者機能 第 1.2 版 2019/04/01 富士通株式会社

<8F898AFA90DD92E88EE88F872E786C73>

FormPat 環境設定ガイド

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

Visual Studio 2017 RC インストール & ファーストステップガイド 2016 年 11 月 16 日 (V1.0)

Microsoft Word - 01.【電子入札】パソコンの設定方法について 修正_

PN-T321

C1Live

鳥取県物品電子入札システムセキュリティ ポリシー設定マニュアル IC カードを利用しない応札者向け 第 1.7 版 平成 31 年 2 月鳥取県物品契約課 鳥取県物品電子入札システムセキュリティ ポリシー設定マニュアル Ver.01-07

工程’S 9 ヘルプ Excelバーチャート

Touch Pen Utility

. はじめに はじめに みなと外国為替 WEBをご利用いただくにあたり ブラウザ ( インターネットに接続するソフト ) の設定作業は原則不要ですが お客さまのご利用環境によっては ブラウザの設定が必要となる場合があります お客さまの状況にあわせて手順をご確認ください ブラウザの設定を行う前にお客さ

Tutorial-GettingStarted

Microsoft Word - IVF15.0.1J_Install.doc

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

BricRobo V1.5 インストールマニュアル

Web GIS Template Uploader 利用ガイド

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

クラウドファイルサーバーデスクトップ版 インストールマニュアル ファイルサーバー管理機能 第 1.1 版 2017/01/24 富士通株式会社

Microsoft Word - UniversalShield_Hitachi.doc

SUD Hintergrund Information

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Oracle Enterprise Managerシステム監視プラグイン・インストレーション・ガイドfor Juniper Networks NetScreen Firewall, 10gリリース2(10.2)

インテル Parallel Studio XE 2017 Composer Edition for Fortran Windows* インストール ガイド Rev (2017/06/08) エクセルソフト株式会社

MAC アドレス変更ツール MAC アドレスチェンジャー ユーザーズマニュアル User's Manual エレコム株式会社

WebOTXマニュアル

音声認識サーバのインストールと設定

パソコン決裁7 Business 試用版

Product Brief 高速なコードを素早く開発 インテル Parallel Studio XE 2017 インテル ソフトウェア開発ツール 概要 高速なコード : 現在および次世代のプロセッサーでスケーリングする優れたアプリケーション パフォーマンスを実現します 迅速に開発 : 高速かつ安定し

タッチディスプレイランチャー

2006

Touch Panel Settings Tool

Touch Pen Utility

(Microsoft PowerPoint - \221S\211\346\226\312\225\\\216\246\225s\213\357\215\207\216\236\202\314\221\316\211\236\215\ _nipponlabo.pptx)

Shareresearchオンラインマニュアル

電子納品のセットアップ(ネット認証版)

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

SystemDirector Developer's Studio(V3.2) 適用ガイド


平成 31 年 2 月 22 日 岐阜県電子入札システムクライアント PC の Internet Explorer 11 設定手順 ( 受注者用 ) 岐阜県電子入札システムを利用するには インターネットエクスプローラーの設定を行う必要があります 設定項目の一覧 ( クリックすると説明箇所へジャンプし

ご利用の前に 目次 - 0. 推奨環境とソフトウェアのバージョン 推奨環境について Windows8 Windows8. について Internet Explorer のバージョン確認 SAMWEB の初期設定 セキュリティ設定..

インテル® VTune™ Amplifier : Windows 環境向けスタートガイド

FA/LAインストールガイド(トライアル版)

ArcGIS Runtime SDK for WPF インストールガイド (v10.2.5)

<発注書作成>

Microsoft Word - VB.doc

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

McAfee SaaS Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護

Microsoft Word - nvsi_100207jp_quantumi40.doc

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

はじめに - マニュアルエディター機能の概要 - Dojoの種類とマニュアルエディター機能解除について マニュアルレイアウトの生成 - マニュアルレイアウトの生成 基本編集 4 - 表紙の挿入 4 - 目次の挿入 5 - 一括変換 6 4 マニュアルビルド 9 4- MS Word 9

1

目次 No. 内容 メニュー名 ページ番号 事前準備 IEバージョン情報確認 互換表示設定 (IE9 IE0 IEの場合 ) 信頼済みサイトへの登録 (IE0 IEの場合 ) 4 受注データを (IE0 IEの場合 ) 6 5 リストを出力する為の設定 (IE0 IEの場合 ) 7 6 ( その)(

パソコンソフト使い放題 クライアントユーザーマニュアル 最終更新日 2013 年 10 月 21 日

捺印ツールを使う 捺印ツールをインストールする 1. [ パソコン決裁 6 試用版捺印ツール ] の [ ダウンロード ] ボタンをクリックします 2. [ 実行 ] ボタンをクリックし [SetupDstmp32.exe] ファイルを実行します ご利用のブラウザまたはバージョンにより画面が異なりま

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Nero ControlCenter マニュアル

Microsoft Word - p2viewer_plus_jpn20.doc

Team Foundation Server 2018 を使用したバージョン管理 補足資料

monologue Sound Librarian 取扱説明書

目次 第 1 章はじめに 電子入札システムを使用するまでの流れ 1 第 2 章 Java ポリシーを設定する前に 前提条件の確認 2 第 3 章 Java のバージョンについて Java バージョン確認方法 Java のアンインストール ( ケース2の

はじめに 動作環境の全ブラウザで 本書の設定を行ってください 本設定を行わない場合 システムが 正常に動作しない可能性がありますので 必ず設定をお願いいたします また 本書の中で 画 像に番号を付与している箇所以外の設定は お使いの環境のままでご使用ください 参考 : 動作環境の全ブラウザについては

Microsoft Word - Setup_Guide

10 完了 をクリック 13 このサーバーは認証が必要 をチェックして 設定 をクリック Windows メール Windows Vista に標準のメールソフト Windows メール の設定方法を説明します 1 スタート から 電子メール Windows メール をクリック 11 続いて設定ファ

地図 SD カードを取り外す 最初に ナビゲーション本体から地図 SD カードを取り外します 本操作は地図 SD カードを初めて ROAD EXPLORER Updater に登録するときや パソコンにダウンロードしたデータを地図 SD カードに保存するときに実行してください 1 ナビゲーション本体

Microsoft Word - プリンター登録_Windows XP Professional.doc

PowerPoint プレゼンテーション

目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定 TP-LINK USB プリンターコントローラーを起動 / 終了するには

EX-フォトビューアの起動方法と使い方

スライド 1

PDF Convertor for mac スタートアップガイド

目次 No. 内容 メニュー名 ページ番号 事前準備 IEバージョン情報確認 互換表示設定 (IE9 IE0 IEの場合 ) (IE0 IEの場合 ) 4 受注データを (IE0 IEの場合 ) 6 5 ( その)(IE0 IEの場合 ) 7 6 ( その)(IE0 IEの場合 ) 8 7 (IE9

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

PDFオートコンバータEX

flashplayer確認手順_ xls

Microsoft Word - Custom1_ABC伝票印刷ドライバー_導入ガイド

Transcription:

インテル Parallel Studio 評価ガイド メモリーエラーの排除と プログラムの安定性の向上 インテル Parallel Studio XE

1 つのツールを実行するだけで違いが出るのでしょうか? はい 多くの場合 複雑なバグを発見して アプリケーションの安定性を向上させることができます このガイドでは インテル Inspector XE 解析ツールを使用して コードの問題を排除する方法を説明します これにより コードの信頼性が向上し 開発コストを抑えることができます 次に サンプル アプリケーションの使用方法を示します パフォーマンス向上のための 3 つのステップ ステップ 1: インテル Parallel Studio XE のインストールと設定 推定所要時間 : 15-30 分 1. インテル Parallel Studio XE の評価版をダウンロードします 2. parallel_studio_xe_2011_setup.exe をクリックしてインテル Parallel Studio XE をインストールします ( システムにより異なりますが 約 15-30 分かかります ) ステップ 2: サンプル アプリケーションのインストールと参照 サンプル アプリケーションのインストール : 1. サンプルファイル Tachyon+Sample.zip をダウンロードします このサンプルは Microsoft* Visual Studio* 2005 を使用して作成された C++ コンソール アプリケーションです 2. Tachyon+Sample.zip ファイルをシステムの書き込み可能なフォルダー ( 例えば マイドキュメント \Visual Studio 20xx\Intel\samples フォルダー ) に展開します ステップ 3: インテル Inspector XE を使用したメモリーエラーの検出 インテル Inspector XE はシングルおよびマルチスレッドのエラー検証ツールです Linux* 版 Windows* 版 (Microsoft* Visual Studio* に統合 ) があり C/C++ C#.NET Fortran で作成されたアプリケーションをサポートします さらに メモリーリークやメモリー破壊を含むメモリーエラーに加えて データ競合やデッドロックのようなスレッドエラーも検出します この開発者の生産性を高める包括的なツールは エラーを正確に示し アプリケーションの信頼性と品質を保証するためのガイダンスを提供します 注 : サンプルを実行した結果が常に同じになるとは限りません 実際の画面は チュートリアルで示されている画面とは異なることがあります 2

メモリーエラーの特定 解析 解決 インテル Inspector XE を使って 一連のステップを実行することで シリアルまたは並列プログラムのメモリーエラーを特定 解析 解決できます このチュートリアルでは tachyon_conf という名前のサンプルプログラムを使用して 順に説明します ターゲットの選択 1. Microsoft* Visual Studio* でサンプルを開きます [ ファイル ] > [ 開く ] > [ プロジェクト / ソリューション ] を選択して tachyon_conf\vc8\tachyon_conf.sln ソリューション ファイルを開きます 図 1 [ ソリューションエクスプローラ ] ペインに tachyon_ conf ソリューションが表示されます 図 1 図 2 2. [ ソリューションエクスプローラ ] ペインで find_and_fix_memory_errors プロジェクトを右クリックして [ スタートアッププロジェクトに設定 ] を選択します 3. [ ビルド ] > [ ソリューションのビルド ] を選択してアプリケーションをビルドします 図 2 4. [ デバッグ ] > [ デバッグなしで開始 ] をクリックしてアプリケーションを実行します 図 3 図 3 3

ターゲットのビルド Microsoft Visual Studio プロジェクトの設定を確認します 次に プロジェクトをビルドして インテル Inspector XE がメモリーエラーをチェックできる実行ファイルを作成します ネイティブコードを含むバイナリーのデバッグモードとリリースモードの両方でインテル Inspector XE を使用できます 以下のオプションを使用してデバッグモードでターゲットをコンパイル / リンクした場合 最も正確な結果が得られます 図 4 コンパイラー / リンカーのオプション正しい設定設定が正しくない場合の影響 デバッグ情報 有効 (/Zi または /ZI) ファイル / 行情報不足 最適化 無効 (/Od) ファイル / 行情報不正 ダイナミック ランタイム ライブラリー 選択 (/MD または /MDd) 誤診あるいは情報不足 図 4 ターゲットのビルド デバッグモードに設定されていることを確認するには : 1. [ ソリューションエクスプローラ ] ペインで find_and_fix_memory_errors プロジェクトを右クリックして [ プロパティ ] を選択します 2. [ 構成 ] ドロップダウン リストが [Debug] または [ アクティブ (Debug)] に設定されていることを確認します 図 5 3. 左ペインで [ 構成プロパティ ] > [C/C++] > [ 全般 ] を選択します [ デバッグ情報の形式 ] が [ プログラムデータベース (/Zi)] または [ エディットコンティニュ用プログラムデータベース (/ZI)] に設定されていることを確認します 図 6 図 5 図 6 4

4. [ 構成プロパティ ] > [C/C++] > [ 最適化 ] を選択します [ 最適化 ] フィールドが [ 無効 (/Od)] に設定されていることを確認します 図 7 図 7 5. [ 構成プロパティ ] > [C/C++] > [ コード生成 ] を選択します [ ランタイムライブラリ ] フィールドが [ マルチスレッド DLL (/MD)] または [ マルチスレッドデバッグ DLL (/MDd)] に設定されていることを確認します 図 8 6. [ 構成プロパティ ] > [ リンカ ] > [ デバッグ ] を選択します [ デバッグ情報の生成 ] フィールドが [ はい (/DEBUG)] に設定されていることを確認します ターゲットがデバッグモードでビルドするように設定されていることを確認するには : 1. [ プロパティ ] ダイアログボックスで [ 構成マネージャ ] ボタンをクリックします 図 8 2. [ アクティブソリューション構成 ] ドロップダウン リストが [Debug] に設定されていることを確認します 図 9 3. [ 閉じる ] ボタンをクリックして [ 構成マネージャ ] ダイアログボックスを閉じます 4. [OK] ボタンをクリックして [ プロパティページ ] ダイアログボックスを閉じます 図 9 5

ターゲットのビルド 1. [ デバッグ ] > [ デバッグなしで開始 ] を選択します アプリケーションを開始すると 以下のような画面が表示されます イメージはレンダリングされていません 図 10 このアプリケーションにエラーがない場合 出力は図 11 のようになります 図 10 図 11 6

解析の設定 メモリーエラー解析の範囲と実行時間に合ったプリセット設定を選択します メモリーエラー解析を設定するには : 1. Microsoft* Visual Studio* で [ ツール ] > [Intel Inspector XE 2011 ( インテル (R) Inspector XE 2011)] > [New Analysis ( 新しい解析 )] を選択して [Analysis Type ( 解析タイプ )] ウィンドウを表示します [Detect Memory Problems ( メモリー問題の検出 )] 解析タイプを選択して 次のようなウィンドウを表示します 図 12 図 12 ナビゲーション ツールバーを使用して インテル Inspector XE の各ウィンドウを切り替えます ツールバーのボタンは 表示されているウィンドウによって変わります 解析タイプツリーに利用可能な解析タイプが表示されます このガイドでは メモリーエラー解析を説明します メモリーエラー解析は GDI リソースリーク 不正な memcpy の呼び出し 不正な割り当て解除 カーネル リソース リーク 不正なメモリーアクセス 不正な部分メモリーアクセス メモリーリーク 割り当てと解放の不一致 不明な割り当て 初期化されていないメモリーアクセス 初期化されていない部分メモリーアクセスの検出に使用できます スレッドエラー解析タイプは データ競合 デッドロック ロック階層違反 クロススレッド スタック アクセスの検出に使用できます [New ( 新規 )] ボタンをクリックして 既存の解析タイプからカスタムの解析タイプを作成することもできます チェックボックスとドロップダウン リストを使用して 解析タイプの設定を調整します ( すべての設定を調整できるわけではありません ) その他の設定を調整したい場合は 別のプリセット解析タイプを選択するか カスタム解析タイプを作成してください [Details ( 詳細 )] 領域では現在のすべての解析タイプ設定が表示されます 別のプリセット解析タイプ またはチェックボックス / ドロップダウン リストの値を選択して [Details ( 詳細 )] 領域がどう変わるかを確認してみてください コマンド ツールバーで 解析の実行を制御したり 他の機能を実行します 例えば [Project Properties ( プロジェクト プロパティー )] ボタンを使用して [Project Properties ( プロジェクト プロパティー )] ダイアログボックスを表示します このダイアログボックスでは デフォルトの結果ディレクトリーの場所を変更したり 解析を高速化するためにパラメーターを設定したり 他のプロジェクト構成機能を実行できます 7

解析の実行メモリーエラー解析を実行して 解決しなければならないメモリーに関する問題を検出します メモリーエラー解析を実行するには : [Start ( 開始 )] ボタンをクリックします > find_and_fix_memory_errors.exe ターゲットが実行されます > 問題が検出されます > tachyon_conf/vc8/my Inspector Results XE find_and_fix_memory_errors フォルダーの結果が収集されます > 結果が処理 ( シンボル情報をファイル名と行番号に変換 重複結果の解決 問題セットの書式を設定 ) されます 収集中 インテル Inspector XE は下記のような [Collection Log ( 収集ログ )] ウィンドウを表示します 図 13 図 13 8

問題セットの選択 [Summary ( サマリー )] ウィンドウで検出したメモリー問題を調査する問題セットを選択します 図 14 問題セットを選択するには : 1. [Problems ( 問題 )] ペインの [Sources ( ソース )] 列ヘッダーをクリックして ソースファイルの位置で問題セットをソートします 必要な場合 ペインの先頭にスクロールして find_and_fix_memory_error.cpp ファイルの問題セットを検索するウィンドウを表示します 2. find_and_fix_memory_errors.cpp ソースファイルの [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題セットのデータ行をダブルクリックして [Sources ( ソース )] ウィンドウを表示します 重点観測および関連観測のソースコードが表示されます 3. find_and_fix_memory_errors.cpp ソースファイルで [Allocation site ( 割り当てサイト )] と 1 つの [Mismatched deallocation site ( 解除の不一致サイト )] のコードの場所を含む [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題セットの調査を開始します 図 15 図 14 図 15 9

結果データの解釈 [Sources ( ソース )] ウィンドウのデータを解釈して 検出されたメモリー問題の原因を特定します 図 16 図 16 [Summary ( サマリー )] ウィンドウのペインのように [Code Locations ( コードの場所 )] ペインは [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題セットの [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題のすべてのコードの場所を示します [Allocation site ( 割り当てサイト )] のコードの場所は メモリーブロックが割り当てられた場所と関連コールスタックを表します [Mismatched deallocation site ( 解除の不一致サイト )] のコードの場所は 解除を試みた場所と関連コールスタックを表します [Related Code Location ( 関連コードの場所 )] ペインには [Allocation site ( 割り当てサイト )] のコードの場所を含む find_and_fix_memory_errors.cpp ソースファイルのソースコードが表示されます ( ペインのタイトルにあるアイコンと [Code Location ( コードの場所 )] ペインの [Allocation site ( 割り当てサイト )] コードの場所データ行にあるアイコンは同じものが表示されています )[Allocation site ( 割り当てサイト )] のコードの場所に対応するソースコードはハイライトされています [Focus Code Location ( 重点コードの場所 )] ペインには [Mismatched deallocation site ( 解除の不一致サイト )] のコードの場所を含む find_and_fix_memory_errors.cpp ソースファイルのソースコードが表示されます ( ペインのタイトルにあるアイコンと [Code Location ( コードの場所 )] ペインの [Mismatched deallocation site ( 解除の不一致サイト )] コードの場所データ行にあるアイコンは同じものが表示されています )[Mismatched deallocation site ( 解除の不一致サイト )] のコードの場所に対応するソースコードはハイライトされています [Timeline ( タイムライン )] ペインは 問題の動的イベント間の関係をグラフィカルに示します 10

結果データを解釈するには : [Focus Observation Code ( 重点観測結果コード )] ペインと [Related Observation Code ( 関連観測結果コード )] ペインでコードを確認します [Related Observation Code ( 関連観測結果コード )] ペインの [Allocation site ( 割り当てサイト )] 観測のコードには new アロケーターが含まれ [Focus Observation Code ( 重点観測結果コード )] ペインの [Mismatched deallocation site ( 解除の不一致サイト )] 観測には free() デアロケーターが含まれています [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題は アロケーターによる割り当てが論理的に行われていない関数で解放を行うと発生します C++ プログラミング言語では 以下の関数がペアになっています > new と delete > new[] と delete[] > malloc() と free() 割り当てと一致する解放を行った場合のみ 対応するメモリー割り当てや割り当てで使用した内部データ格納領域が正しく処理されます 割り当てと一致しない解放を行うと 多くの場合メモリーの再利用で問題が発生します 注 : 割り当てと解放の不一致によって必ずしもアプリケーションがクラッシュするとは限りません ただし 無関係な場所で後からクラッシュする可能性があります find_and_fix_memory_errors.cpp ソースファイルの new と free が一致していないことが [Mismatched allocation/deallocation ( 割り当てと解除の不一致 )] 問題セットの原因であることがわかりました 問題の解決 Microsoft Visual Studio エディターにアクセスしてメモリー問題を解決します 問題を解決するには : 1. [Sources ( ソース )] ウィンドウの [Focus Observation Code ( 重点観測結果コード )] ペインでハイライトされているコードをダブルクリックします 別のタブに find_and_ fix_memory_errors.cpp ソースファイルが表示されます Microsoft Visual Studio エディタを使用してコードを編集できます 図 17 2. free(drawing); をコメントアウトして //delete drawing; のコメントアウトを外します 図 17 11

リビルドと解析の再実行 ソースコードを変更してターゲットをリビルドした後 再度メモリーエラー解析を実行して 変更によってメモリーエラー問題が解決したかどうかを確認します ターゲットをリビルドするには : [ ソリューションエクスプローラ ] ペインで find_and_fix_memory_errors プロジェクトを右クリックして ポップアップ メニューから [ ビルド ] を選択します 最後に実行した解析と同じ種類の設定を再実行するには : [ ツール ] > [Intel Inspector XE 2011 ( インテル (R) Inspector XE 2011] > [New Analysis ( 新しい解析 )] を選択して 上記の手順に従って find_and_fix_memory_errors.exe ターゲットを実行します 以下のように表示されます 図 18 図 18 - イメージが正しく表示されるようになりました 結果 この例では プログラムにバグがあり正しく動作しておらず イメージはレンダリングされませんでした インテル Inspector XE を実行し バグを修正した後 イメージは正しくレンダリングされるようになっています ほとんどの場合 インテル Inspector XE を実行するだけでこのような成果が得られます ただし 解析を細かく行うために非常に時間がかかることがあります 次のセクションでは インテル Inspector XE で大規模なアプリケーションを実行する場合のヒントを紹介します プログラムをマルチスレッド化している場合 インテル Inspector XE が隠れたデータ競合やデッドロックなどのスレッドエラーも検出できることに驚かれることでしょう インテル Inspector XE には 複数のワークロードやテストケースでアプリケーションのテストを自動化できるコマンドライン インターフェイスも用意されています バッチモードで一晩中実行したり リグレッション テスト ( 回帰テスト ) の一部として実行できます 12

大規模なアプリケーション / 複雑なアプリケーションの場合のヒント 重要な概念 : 小さく代表的なデータセットを選択する 解析を実行するとき インテル Inspector XE はデータセットに応じてターゲットを実行します データセットのサイズはターゲットの実行時間と解析速度に直接影響します 例えば 1000x1000 ピクセルのイメージのほうが 100x100 ピクセルのイメージよりも処理は長くなります 大きなイメージではループで 1...1000 の反復空間が必要になるのに対して 小さなイメージでは 1...100 でかまわないことも理由の 1 つです 完全に同じコードパスを両方のケースで実行します 違いは これらのコードパスを繰り返す回数だけです ターゲットから冗長な処理を省くことで 完全性を損なうことなく 解析時間を制御できます 大きな繰り返し型のデータセットの代わりに 小さく典型的なデータセットを選択してください 数秒で実行できるデータセットが理想的です すべてのコードが確実に検査されるように 他のデータセットを作成することもできます スレッドエラーの管理 インテル Inspector XE は 並列プログラムの隠れたデータ競合やデッドロックのようなスレッドエラーも特定 解析 解決します 発見 再現 修正が非常に困難な 再現性がなく 異なる結果となるようなエラーも検出できます コマンドラインを使用したテストの自動化 インテル Inspector XE は エラーを検出するためにコードパスを実行する必要があるため 異なるコードパスや異なるワークロードを考慮して コードを複数回実行することになります このため コード検査ツールが十分な時間をかけてテストできるように これらのテストを一晩中 あるいはリグレッション テストの一部として実行し コンピューターに作業させるほうがより効率的です 翌日に複数のテストの結果を確認するだけで済みます インテル Inspector XE のコマンドライン バージョン (inspxe-cl) は コマンドウィンドウから使用します ([ スタート ] > [ ファイル名を指定して実行 ] を選択し cmd と入力して [OK] をクリックした後 インテル Inspector XE をインストールしたフォルダーのパスを入力して起動します ) 図 19 inspxe-cl でヘルプを表示するには help コマンドライン オプションを使用します > c:\program Files\Intel\Inspector XE 2011\bin32\inspxe-cl help 図 19 13

関連情報 ラーニング ラボテクニカルビデオ ホワイトペーパー Webinar の再生などインテル Parallel Studio XE 製品ページ HOW TO ビデオ 入門ガイド ドキュメント 製品の詳細情報 サポートなど 評価ガイドさまざまな機能の使用法を紹介する評価ガイド インテル ソフトウェア ネットワーク フォーラム開発者のコミュニティー インテル ソフトウェア製品ナレッジベース製品やライセンスに関する情報を掲載 30 日間の評価版のダウンロード 最適化に関する注意事項 インテル コンパイラー 関連ライブラリーおよび関連開発ツールには インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能な命令セット (SIMD 命令セットなど ) 向けの最適化オプションが含まれているか あるいはオプションを利用している可能性がありますが 両者では結果が異なります また インテル コンパイラー用の特定のコンパイラー オプション ( インテル マイクロアーキテクチャーに非固有のオプションを含む ) は インテル製マイクロプロセッサー向けに予約されています これらのコンパイラー オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は インテル コンパイラー ユーザー リファレンス ガイド の コンパイラー オプション を参照してください インテル コンパイラー製品のライブラリー ルーチンの多くは 互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます インテル コンパイラー製品のライブラリー ルーチンの多くは 互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます インテル コンパイラー製品のコンパイラーとライブラリーは 選択されたオプション コード およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが インテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります インテル コンパイラー 関連ライブラリーおよび関連開発ツールは 互換マイクロプロセッサー向けには インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります これには インテル ストリーミング SIMD 拡張命令 2 ( インテル SSE2) インテル ストリーミング SIMD 拡張命令 3 ( インテル SSE3) ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます インテルでは インテル製ではないマイクロプロセッサーに対して 最適化の提供 機能 効果を保証していません 本製品のマイクロプロセッサー固有の最適化は インテル製マイクロプロセッサーでの使用を目的としています インテルでは インテル コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて 優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが お客様の要件に最適なコンパイラーを選択いただくよう 他のコンパイラーの評価を行うことを推奨しています インテルでは あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され お客様のビジネスの成功のお役に立ちたいと願っております お気づきの点がございましたら お知らせください 改訂 #20110307 2011 Intel Corporation. 無断での引用 転載を禁じます Intel インテル Intel ロゴは アメリカ合衆国およびその他の国における Intel Corporation の商標です * その他の社名 製品名などは 一般に各社の表示 商標または登録商標です 14