QNX Momentics ツール スィート
QNX® Momentics® ツール スイートは Eclipse ベースの包括的な統合開発環境(IDE)であり、システムの動作を最大限に可視化するイノベーティブなプロファイリング ツールを搭載しています。こうした独自のツールにより、開発者はリアルタイム インタラクションやメモリ プロファイルなどをひと目で把握でき、デバッグ時間の短縮と製品の市場へのより迅速な投入が可能になります。開発者は、マルチコア特有のツールを使用して、シングルコアからマルチコア システムへのコードの移行をスムーズに行い、パフォーマンスの最適化を安全に行います。
主な特徴
- オープンな Eclipse IDE ベース
- C および C++ のサポート
- マルチコアのサポート
- ソース コントロールの統合
- ソース デバッガ
- システム ビルダ
- ターゲット システム情報
- アプリケーション プロファイラ
- システム プロファイラ
- メモリ分析
開発ホスト
- Windows
- Linux
ターゲット プロセッサ
- ARM
- MIPS
- PowerPC
- SH-4
- x86
ライブラリと GNU ツール
- ANSI C
- Dinkum C++ および組み込み C++
- GCC 最適化コンパイラ
ドキュメンテーションとトレーニング
- コンテキスト センシティブ ヘルプ
- オンライン マニュアル
- 印刷版マニュアル
- トレーニング ビデオ
- チュートリアル
- チート シート
- サンプルプロジェクト
推奨システム要件
- 2 GHz Intel Pentium 4
- 512MB RAM
- ディスク容量 2.5 GB
- モニタ解像度 1280 x 1024
これらのシステム要件は Microsoft Windows ホストに推奨されるものです。また、リリースにより異なります。Linux、QNX Neutrino® RTOS、Windows ホストの最小要件および推奨される要件の詳細については、QNX にお問い合わせください。
QNX® Momentics® ツール スイートでは、他の Eclipse ベース IDE で一般的な開発およびデバッグに関するすべての機能に加えて、マルチコア プロファイリングおよびインスツルメンテッド カーネルなど独自の QNX 機能を提供します。
1つにまとまった IDE
Eclipse は、ツール同士がシームレスに動作するように、十分に定義されたインターフェイスを提供します。すべてのツールで同じ外観と操作性を共有するので、開発者は 1 つのユーザー インターフェイスを理解するだけで済みます。
また、開発者は、ツールベンダと開発者の急拡大中のコミュニティが支える、オープンで拡張可能なツール統合プラットフォームを利用することもできます。さらに、サードパーティのツールをプラグインすることも、独自のプラグインを作成することもできます。
開発の高速化
QNX Momentics ツール スイートには生産性と品質を分析する以下のようなツールが用意されており、開発時間の短縮を実現します。
- 迅速かつ容易にプロジェクトを作成するためのウィザード
- 事前に作成したファイルを使用してターゲット イメージを生成するためのシステム ビルダ
- より迅速に、より徹底した品質保証を行うために実行されたソース コード パスをハイライト表示するためのコード カバレッジ
パフォーマンスの最適化
QNX Momentics ツール スイートの独自のツール セットにより、デバッグだけでなく、パフォーマンスの最適化も容易になります。システム プロファイラやアプリケーション プロファイラなどのツールにより、開発者は、シングルコアとマルチコア システムの両方において、最適化によりパフォーマンスが改良されるのか正確に把握できます。また一方で、コード カバレッジ ツールや Mudflap などのツールは、堅牢で信頼性の高い組み込みシステムの構築に必要なすべてを提供します。
フレキシブルな設計
QNX Momentics ツール スイートにより、開発チームはプロジェクトに最適なターゲット プラットフォーム、およびスキルと要望に最も合うホストとプログラミング言語を選定できます。以下がサポートされます。
- C および C++ プログラミング言語
- Windows または Linux ホスト
- ARM、MIPS、PowerPC、SH-4、x86 ターゲット
QNX Momentics ツール スイートは、言語とプロセッサのアーキテクチャを柔軟に混在させて同時に処理することも可能です。
コミュニティ ポータル
QNX ソフトウエア開発者用ポータルである Foundry27 は、ソース リポジトリ、フォーラム、ブログ、wiki の提供を開始しました。さらにコミュニティ精神に基づき、開発者が情報やアイデアを交換したり、お互いのソース コードやバイナリを共有できるバザールも用意しています。
QNX® Momentics® ツール スイートは、C/C++ および C++ 開発向けに最適化された環境を提供します。開発者は、コマンドラインまたはグラフィカルな IDE 環境のいずれかを選択でき、ウィザード、コード エディタ、柔軟な makefile 構造などの数々の生産性機能を活用できます。
ウィザード
QNX Momentics ツール スイートでは、ビルトイン プロジェクト ウィザードによりプロジェクト作成プロセス全体が自動化されます。さらに、以下のような機能があります。
- C、C++、makefile、QNX プロジェクトの選択
- 手順ガイドに従い、ターゲット プロセッサを自由に組み合わせてプロジェクトを構築
- ビルド ディレクトリ、依存ファイル、および開始ソース コードをプロジェクトに追加
- プロジェクト全体を自動的にコンパイルして、ワーキング アプリケーションを構築
QNX Momentics ツール スイートのコード エディタは、カットアンドペースト、取り消し、コメント、ハイライ、言語固有のインデントなど、時間短縮に役立つ機能を備えています。
IDE は組み込まれたエディタと外部のエディタを両方使用します。ユーザーがファイルを開くと、IDE はファイルに関連付けられている組み込まれたエディタを起動します。組み込まれているエディタを使用できない場合、IDE は適切な外部のエディタを起動しようとします。
コンテント アシスト
エディタを使用すると、コンテント アシスト機能を実装して、関数名の提案と完成、関数の概要、引数、必要なヘッダの表示、必要なすべての include 文の挿入を行うことができます。
コードの折り畳み
開発者は、機能していないコードのセクションを折り畳む(非表示にする)ことができます。この折り畳み機能で混合折り畳みを使用すると、親セクションが折り畳まれてもコードのサブセクションが表示されるように設定できます。
コード テンプレート
単一のキーストロークを使用して、開発者は例外処理ブロックや for ループなどの、共通に使用するコード コントラクトを挿入できます。各エディタには、あらかじめテンプレートが用意されており、編集や複製を行うことができます。
マーカー
各エディタには、ビルド ツールが生成したエラーなど、現在のファイルに関連付けられたマーカが表示されます。マーカーをクリックするだけで、問題のあるラインが示されます。開発者は、作業メモやブックマークとしてマーカーを挿入することもできます。
ソース ナビゲータ
ソース ナビゲータでは、コンテキスト固有のリファレンス検索や定義検索、概要ビューによるソース コードとプロジェクト ヘッダ ファイルの高速移動、関数の宣言とプロトタイプへの移動ができます。
ローカル履歴
IDE エディタにはローカル履歴は保存されるので、デバッグ時の一時的な変更が容易です。エディタのオプションを設定できるので、作業中のファイルの複数のリビジョンを自動的に保存したり、バージョンの比較やマージを行ったり、また、変更を元に戻すこともできます。
IDE では、組み込みシステムの開発に使い慣れたツールを使用できます。開発者は、以下を使用して同じバイナリやコンテキストを正確に構築できます。
- IDE から起動するコマンドライン ツール
- IDE ツール
- コマンドラインと IDE ツール
ビルド設定の制御
IDE ではコンパイラやリンカーのオプション、特別なインクルード、ライブラリなどのビルド設定を行うことができます。
マルチプロセッサの makefile
IDE では、マルチプロセッサ環境用の makefile を作成する必要はありません。ポイントアンドクリック インターフェイスを使用して、1 つまたは複数の CPU をターゲットにしたり、マルチプロセッサの再帰的 makefile フレームワークを構築するといった、環境に必要なものを開発できます。IDE はビルド設定を従来の makefile 形式で保存します。
再利用と移植
開発者は makefile に基づいて既存のプロジェクトを再使用、または make 以外のビルド コマンドに基づいてプロジェクトを移植できます。
起動設定ウィザード
開発者は、クリックするだけで、構築、実行、デバッグができます。起動設定ウィザードにより、どのプログラムをどのターゲットでどのようなデバッグ オプションを付けて起動するかを簡単に指定することもできます。
IDE は、複数のアプリケーションを同時に、またはユーザーが指定した順序でダウンロードして起動することができる起動グループをサポートします。IDE は起動グループの基本設定を記憶しているため、後続セッションの起動が迅速かつ簡単です。
IDE では、1 つの環境だけですべてのソースを管理できます。IDE は以下をサポートします。
- Foundry27 などのサブバージョンベースのリポジトリとシームレスに統合するためのサブバージョン
- リモート pserver と安全な SSH リポジトリ アクセスの両方をサポートする、CVS ソース コントロール プロトコル
- Eclipse プラグインを使用する他の多くの構成の管理:ClearCase、Perforce、SCWI など
ビルトインのバージョンと構成の管理
バージョンと構成の管理が IDE フレームワークに組み込まれるため、ソース コードを管理するときに IDE から切り替える必要がありません。開発者は異種ソース コントロール環境で作業できます。プロジェクト内のさまざまなファイルを含む、さまざまなプロジェクトで異なるソース コントロール プロトコルを使用できます。
バージョンの制御、比較、マージ
IDE ソース コントロールには、主に以下のような機能があります。
- ソース ベースの更新時にバージョンを制御
- チーム メンバーへの変更のリリース時にバージョンを制御
- ファイル参照時に、改訂履歴に別の開発者が行った変更を表示
- グラフィカルなファイル バージョン比較
- 複数の開発者が同じソースを修正するときに発生した矛盾を解決するインタラクティブなマージ機能
QNX® Momentics® ツール スイートには統合デバッギング環境があり、スイートの他のツールに完全に統合されています。プログラミング言語に関係なく、当面の問題に柔軟に対処できます。
他の任意のツールのビューをソース デバッガーで直接開くことができるため、アプリケーションの状態とデータ情報を完全に提供できます。ソース デバッガーのその他の機能により、以下のことが可能です。
- C と C++ でコーディングされた複数のアプリケーションを同時にデバッグ
- マルチスレッド アプリケーションのデバッグ - 各スレッドを個別にトラッキングして、スレッドごとのに制御をトレース
- 複数の CPU(またはマルチコア プロセッサのコア)に分散した複数のプロセスをデバッグし、CPU 間の実行パスをトレース
- デバッガを実行中のプロセスにダイナミックに関連付け
- コア ダンプ ファイルの事後分析
QNX® Neutrino® RTOS には、リアルタイム実行用の洗練されたトレースとプロファイルのメカニズムがを提供するインスツルメンテッド バージョンのマイクロカーネルが搭載されており、シングル プロセッサとマルチプロセッサの両方のシステムの監視を行うことができます。IDE ではすべてのトレース イベントとモードを設定でき、ログ ファイルが自動的にリモート システムに転送され、分析されます。
ハイ パフォーマンス
インスツルメンテッド カーネルはほとんどオーバーヘッドを使用しないので、非常に優れたパフォーマンスを実現します。約 30 キロバイトしか追加メモリを必要とせず、通常、ログを記録していない場合、非インスツルメンテッド カーネルの 約 98% の速度です。
ロー オーバーヘッドでハイ パフォーマンスあるため、多くのユーザーは、プロジェクト開発とプロトタイピング時にインスツルメンテッド カーネルを使用するだけでなく、最終製品にも搭載します。その結果、システムの納品後の診断やデバッグ機能が著しく改良されます。
非侵入型
非侵入型のインスツルメンテッド モジュール - プログラムがカーネルにどのようにアクセスするかを監視するために、プログラムのソース コードを変更する必要はありません。
イベント制御
開発者は、QNX® Momentics® ツール スイートを使用してインスツルメンテッド カーネルで記録して配信するデータ量を容易に制限し、以下のような特定の問題を解決するために必要なデータに注目できます。
- トレース イベント デリバリをトリガーする初期条件を制御
- トレース イベント デリバリを動的に制御するために事前定義されたカーネル フィルタを適用
- カスタム トレース イベント ハンドラを実装し、記録して配信するデータをさらにフィルタリング
QNX® Momentics® ツール スイート アプリケーション プロファイラでは、どんなに大規模で複雑なプログラムであっても、一行づつソースをたどることなく、プログラムの全体的なパフォーマンスを調査します。開発者は、よく使用されるコード領域をすぐに絞り込み、デバッギング、パフォーマンス分析、および最適化を実行できます。
- プロファイラをターゲットの実行済みソフトウエアに関連付けて、ライブ プロファイリングを収集
- ソースライン レベルに掘り下げて、最も CPU サイクルを消費するラインを表示
- 複数のプロセッサとターゲットおよび共有ライブラリのプロセッサの使用状況を分析
- ターゲット ソフトウエアの完全プロファイル バージョンをコンパイルして起動し、完全な実行情報を取得
- 統計ファイルをプロファイラにロードして、事後のプロファイリングと分析を実行
非侵入型プロファイリング
アプリケーション プロファイラは定期的な間隔で実行をサンプリングして、アプリケーションや共有ライブラリで効率の悪い箇所を特定します。この手法には、インスツルメンテーション、コード変更、特別なコンパイルが必要ないため、プロファイラが収集された情報に悪影響を及ぼすことはありません。アプリケーション プロファイラにはインスツルメンテーションが必要ないため、ロー オーバーヘッドが実現します。サンプリングのリセットはアプリケーションを再起動せずにできるので、さまざまなロードの結果を容易に比較できます。
インスツルメンテッド プロファイリング
正確な実行カウントを取得するために、コンパイラはコンパイル済みコードをインスツルメントしてプロファイリングを行います。インスツルメンテッド コードは、関数コールのレポートを行い、コールペア(呼び出される関数と呼び出す関数)情報を提供します。コールカウントと実行の統計を使用しボトルネックを特定したら、開発者は IDE のコール グラフを調べて関数の呼び出し元を特定し、コードの最適化に役立てることができます。
マルチコアの最適化
マルチコア システムへの初期ポートの後、開発者はアプリケーション プロファイル分析を使用して、並列処理化の対象コードを簡単に特定できます。たとえば、CPU の負荷が高いシグナル処理ルーチンは、アプリケーション プロファイルですぐにわかります。このルーチンを複数のマルチスレッド ルーチンに分割することにより、対称型(SMP)マルチプロセシング システムで並行処理を実行できます。
QNX® Momentics® ツール スイートのシステム プロファイラは、インスツルメンテッド カーネルと連携して動作するので、オペレーティング システムのイベントやアクティビティを知ることができます。アプリケーション プロファイラと同様に、システム プロファイラはシステム全体のレベルで改良する必要のある領域を特定するのに役立ちます。
- IPC ボトルネック - スレッド間のメッセージ フローを観察
- リソースの競合 - 状態を変更するスレッドを発見
- マルチコア マシンでのキャッシュの干渉 - ある CPU またはコアを別の CPU またはコアに移行するスレッドを発見
マルチコア システム プロファイリング
システム プロファイラは、シングル コア システムと対称型マルチプロセシング(SMP)を実装しているマルチコア システムの両方で動作します。マルチコア システム プロファイリングには、システム全体または個々の CPU に対して以下のような機能があります。
- CPU によるスレッド カラー コーディングにより、各スレッドがどのプロセッサで動作しているか容易に特定可能
- CPU 移行サマリーでは、カーネルのスケジューリングによってスレッドがプロセッサ間をどの程度移動したかが示され、キャッシュ ストレージブレードラッシングの原因を特定
- コア間のメッセージングのサマリーでコア間でどの程度のメッセージ パッシングが発生したかを表示
スナップショット、サマリー、統計、その他
システム プロファイラは、システムの動作や問題の解決方法、パフォーマンスを向上させる方法を正確に理解するために必要なツールを提供します。
- グラフィカルなディスプレイでインスツルメンテッド カーネルから取得したデータ使用して、コンポーネントのインタラクションを表示
- スレッド状態スナップショットで、指定した時刻の各スレッドの状態のサマリーを提供
- Why Running ツールで、スレッドの現在の状態の原因となるイベントのリストを表示
- ユーザー定義のフィルターにより、特定の必要なイベントのトレース、データ量の削減、分析の簡素化を実現
- クライアントが直接必要とする時間、クライアントがサーバーに要求する時間などのクライアント サーバーの統計データを提供
- クリティカルなシステムのインタラクションのパフォーマンスを分析するために、トレースをアプリケーション プロファイラをエクスポート
QNX® Momentics® ツール スイートには統合されたコード カバレッジ ツールがあり、開発者はこれを使用してテスト中に実行されなかったコードを特定できます。また、テスト スイートを変更してコードを実行したり、不要になったコードを削除することもできます。コード カバレッジ ツールは以下に最適です。
- コードカバレッジ セッションを起動して、アプリケーションを即座に監視
- 基本ブロック(ブランチ パス)までのバイナリ カバレッジのライブ結果を表示
- コード エディタを起動して対象ソース ラインを一目で把握
- すべてのナビゲーションを使用して、ツールを参照してコードカバレッジ データの分析を支援
- 複数のアプリケーションの実行でコードカバレッジの経過を表示
- レポートの生成による追加分析
コード カバレッジ ツールは、テスト要件が厳しいプロジェクト環境において不可欠なツールです。また、オリジナル コードの開発に従事していなかったり世界各国に所在したりする別々のチームが、バグ修正やソフトウエアの保守を行う場合にも不可欠なツールです。
Mudflap はランタイムのポインタ使用をチェックする機能で、ランタイム エラー チェックをポインタに追加する GNU C/C++ コンパイラ(GCC)に含まれます。QNX Momentics ツール スイートでは、Mudflap にはツール チェーンに追加のツールは必要なく、以下が含まれます。
- ビルド統合ツール - 開発者はビルドのバリアントまたはオプションとして Mudlflap を選択
- 起動ツール - 開発者は、バッファ オーバーフロー、無効なヒープの使用、NULL ポインタの再参照などの、Mudflap が検出したエラーを表示して解析することが可能
QNX® Momentics® ツール スイートが提供する総合的なツールセットにより、ブート イメージやファイルをターゲット ハードウエアに転送したり、ターゲットの重要な情報を収集して診断やデバッグを行うことができます。
システム ビルダを使用すると、組み込みシステムの OS イメージの構築を簡素化し、RAM のブート イメージやカスタムのフラッシュ ファイル システムのイメージを作成する際に、大幅に時間を短縮できます。イメージの作成では、システム ビルダは以下のような機能を提供します。
- 新規 BSP プロジェクトの自動作成
- 開発者は組み込み済みのターゲット ファイルを BSP からインポート可能、または新しいファイルを作成可能
- ターゲットのイメージ ブラウザにより、開発者はイメージのバイナリ、DLL、およびライブラリをすばやく選択可能
- ライブラリの依存関係をトラッキングして、欠落コンポーネントを表示
- イメージは常に C/C++ プロジェクトの最新ビルドを保有
- 不要な機能を共有ライブラリから削除して、アプリケーションのメモリ フットプリントを削減
イメージのターゲットへのロード
ビルト イメージをターゲットに転送するために、システム ビルダでは、リモート ROM モニタと交信できる複数のビルトインのシリアル端末を使用したり、TFTP または BOOTP を介してイメージを転送したりできます。
ターゲットが立ち上がると、多様なメカニズムを使用して、追加の開発とファイルの転送を実行できます。IDE のファイル ブラウザを使用して、ターゲット上のファイルを直接編集して更新できます。
QNX Momentics ツール スイートには、起動、デバッギング、プロファイリング、情報収集などの複数のターゲット ツール サービスの実行をサポートする拡張性の高い独自のターゲット エージェント アーキテクチャを備えています。
ターゲット エージェントを通じて、IDE の任意のツールはターゲットと通信できます。ホスト システムがサービスをアクティブ化すると、ターゲット エージェントが対応するモジュールをターゲットにロードします。サービスが必要なくなると、ターゲット エージェントはそのサービスを削除し、必要なものに対してのみターゲットのフットプリントを維持します。
他の QNX ドライバと同様に、ターゲット エージェントは、必要に応じてダイナミックに起動および終了できます。
IDE のターゲット システム情報ツールは、ターゲット システムの大量のライブおよびポストモーテム情報を提供します。
- リソースを多量に消費する使用ポイントを検出 - メモリ消費、CPU 使用率、ファイル接続数
- デッドロックが発生する可能性のある状況を検出して対処 - プロセス間のブロッキング関係のグラフィック表示を提供
- ローカル ホストと同じように、リモート ターゲット システムでファイルを操作
- 新しいファイルをリモート ターゲットに転送し、IDE から直接編集可能
- プログラム ランチャを拡張し、ダブルクリック操作だけでターゲットの実行ファイルを起動可能
概要と詳細情報
ターゲット システム情報ツールは、ターゲット システム全体の大まかな概要と、プロセスとスレッドに関する詳細情報を提供します。たとえば、大まかな概要から始め、どのプロセスがアクティブかを特定し、さらにそれに使用されている引数を特定できます。また、システム全体またはプロセス単位で、CPU とメモリの使用率も表示できます。さらに必要に応じて、スレッドの属性(状態、スケジューリング ポリシー、CPU 使用率、スタック サイズなど)、シグナル状態、プログラム メモリ マッピング、ファイル記述子などをまで掘り下げて調べることができます。
QNX Momentics ツール スイートは進化し続けています。最新リリース(4.7)は、QNX ソフトウエア開発プラットフォーム 6.5.0 のリリースで使用できます。
Release 4.7
- Eclipse 3.5.2 および CDT 6.0 の統合
- GNU C/C++ コンパイラ 4.4 および GDB 6.7 のサポート
- 遅延リンクと遅延ロードのサポート
Release 4.6
- Eclipse 3.4 および CDT 5.0.2 の統合
- GNU C/C++ コンパイラ Mudflap の視覚化
- Foundry27 の統合と BSP のインポート - IDE での 直接 BSP チェックアウト
- システム プロファイラの改良
Release 4.5
- Eclipse 3.3 および CDT 4.0 の統合
- C/C++ 開発環境の拡張
- ターゲット システム情報ツールの改良
- アプリケーション プロファイラおよびシステム プロファイラの改良
- GNU C/C++ コンパイラ 4.2 コード カバレッジのサポート