Vitis IDE デバッグ フロー - 2020.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2020-08-20
Version
2020.1 Japanese

Vitis IDEを使用すると、デバッグ機能に簡単にアクセスできます。手動で設定すると、デバッグの実行ファイルを設定するのに多くの手順が必要となります。デバッグ フローを使用すると、これらの手順が Vitis IDE で自動的に処理されます。

注記: Vitis IDE のデバッグ フローは、デバッグ中のシェル スクリプトに依存します。これには、.bashrc または .cshrc などのコンフィギュレーション ファイルが LD_LIBRARY_PATH などの環境設定と競合しないようにする必要があります。

デバッグ用に実行ファイルを準備するには、ビルド コンフィギュレーションを変更して Host debug および Kernel debug を適用できるようにする必要があります。これらのオプションは、Vitis IDE の Project Editor ビューから設定できます。Options セクションに 2 つのチェック ボックスがあります。

  • [Host debug] は、ホスト コンパイルのデバッグ構文を有効にし、すべてのビルド タイプで使用できます。
  • [Kernel debug] はカーネルのデバッグを有効にしますが、ソフトウェアおよびハードウェア エミュレーション ビルドでのみ使用できます。ハードウェア ビルドでのデバッグを有効にするには、Vitis のハードウェア関数設定 に示すように Chipscope Debug 設定を使用します。

これらのチェック ボックスをオンにすると、g++ および Vitis コンパイラで -g または --debug オプションがイネーブルになります。

図 1. [Project Editor] ビューのデバッグ オプション

デバッグ機能は、Vitis ビルド コンィギュレーション設定 に示す Build Configuration Settings ダイアログ ボックスからもイネーブルにできるほか、Assistant ビューでビルド コンフィギュレーションを選択して Settings ボタンをクリックしても有効にできます。または、ビルド コンフィギュレーションをダブルクリックします。同じ 2 つのチェック ボックスが表示されます。ホスト デバッグはすべてのターゲットで有効にできますが、カーネル デバッグはソフトウェア エミュレーションおよびハードウェア エミュレーション ビルド ターゲットでしかサポートされません。

Vitis IDE から GDB セッションを実行すると、必要なものがすべて設定され、ハードウェアまたはソフトウェア エミュレーションの環境設定が自動的に管理されます。xrt.ini ファイル に説明するように、アプリケーションが実行されるときにデバッグがサポートされるように XRT が設定され、ホスト コード、カーネル コード、およびデバッグ サーバーの実行に必要なさまざまなコンソールが管理されます。

エンベデッド プラットフォームで実行する際、Vitis IDE は QEMU システム モード、PL カーネルのロジック シミュレータも設定および起動し、それらの同期を管理します。詳細は、launch_emulator ユーティリティ を参照してください。

デバッグし、ビルド ディレクトリをクリーンアップしてアプリケーションをビルドし直すビルド コンフィギュレーションを設定すると、GDB デバッグ環境でプロジェクトを実行する準備が整います。

デバッグ セッションを開始するには、[Assistant] ビューのビルド コンフィギュレーションを選択し、Debug () ボタンをクリックします。Vitis IDE でデバッグ セッションを開始すると、パースペクティブが Debug に切り替わり、さまざまなデバッグ ビューおよびソース コード ウィンドウなどを管理するウィンドウが追加で表示されるようになります。次の図に、Debug パースペクティブを示します。

図 2. [Debug] パースペクティブ

デバッグ環境を起動すると、デフォルトではホスト コードの main 関数本体の開始部分でアプリケーションが停止します。ほかの GDB グラフィカル フロントエンドと同様、ブレークポイントを設定し、変数を検証できます。Vitis IDE では、アクセラレーションされたカーネル インプリメンテーションに対しても同じ機能を使用できます。詳細は、アプリケーションおよびカーネルのデバッグ を参照してください。

注記: ハードウェア エミュレーションでは、効率の良いインプリメンテーションのため C/C++/ OpenCL™ カーネル コードが変換されるので、すべての文にブレークポイントを配置できるわけはありません。ほとんどの場合、未処理のループおよび関数には配置できます。また、保持されている変数しかアクセスできません。