次の方法で共有


パートナー アプリケーションをデバッグする

  1. デバイスが USB で PC に接続されていることを確認します。 [スタートアップ項目の設定] メニューで、[Azure Sphere App (すべてのコア)] を選択します。ここで、Azure Sphere App は最上位のプロジェクトの名前であるか、F5 キーを押します。

    リモート GDB デバッガー ボタン

  2. プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、パートナー アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード して、デバッグ モードで起動します。 サイドローディング とは、アプリケーションがクラウド経由で配信されるのではなく、有線接続を介して PC から直接配信されることを意味します。

    [出力>の表示>] [出力の表示元: ビルド出力] のパスに注意してください。これは、PC 上の出力イメージ パッケージの場所を示します。 デプロイを作成する準備ができたら、イメージ パッケージへのパスを把握する必要があります。

  3. 既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます。 デバッガーからメッセージを表示するには、[出力の表示元] ドロップダウン メニューから [デバッグ] を選択します。 また、プログラムの逆アセンブリ、レジスタ、またはメモリを [デバッグ>] Windows メニューから調べることもできます。

2 つの RTApp がある場合は、両方が 最上位のlaunch.vs.json ファイルにパートナー アプリとして一覧表示されていることを確認します。

Visual Studio デバッガーを使用して、ブレークポイントの設定、一時停止、ステップ オーバー、ステップ イン、再起動、またはアプリケーションの停止を行います。

C ソース コードのブレークポイントで停止している間、現在のアドレス、現在のコマンドのアセンブラーニーモニック、関連するレジスタや実行中のソース コード コマンドなどの情報を表示する 逆アセンブル ウィンドウ を開くことができます。

[逆アセンブリ] ウィンドウを開くには:

  1. Visual Studio でブレークポイントを含む C コード ソース ファイルが開かれていることを確認します。
  2. [Windows>逆アセンブリのデバッグ]> を選択するか、Alt キーを押しながら 8 キーを押します。
  1. パートナー アプリケーションを含むフォルダーを開きます。 Visual Studio Code は、ワークスペース ファイルを検出し、ワークスペースを開くかどうかを確認します。 [ワークスペースを開く] を選択して、リアルタイム アプリケーションと高レベル アプリケーションの両方を一度に開きます。

  2. 2 つの CMakeLists.txt ファイルのいずれかを右クリックし、[ Build All Projects]\(すべてのプロジェクトのビルド\) を選択します。

  3. Visual Studio Code アクティビティ バーの [実行] アイコンをクリックします。

  4. 画面の左側のウィンドウの上部に表示されるプルダウン メニューで、[ Azure Sphere Apps (gdb)(ワークスペース) の起動] を選択します。

  5. F5 キーを押してプロジェクトをビルドしてデバッグします。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合、Visual Studio Code はデバッグを開始する前にプロジェクトをビルドします。

  6. Visual Studio Code がアプリケーションをビルドし、イメージ パッケージを作成し、ボードにデプロイし、デバッグ モードで起動するまで数秒待ちます。 途中で [ 出力 ] ウィンドウに状態の更新が表示されます。

    まず、CMake は、アプリケーションをビルドする必要があるかどうかを判断します。 その場合は、フォーカスが出力ウィンドウに移動し、CMake/Build からの出力が表示されます。

    次に、イメージ パッケージをデバイスにデプロイすると、出力ウィンドウに出力が表示されます。 最後に、デバッグ コンソールはフォーカスを受け取り、gdb 出力を表示します。

Visual Studio Code デバッガーを使用して、ブレークポイントの設定、一時停止、ステップ オーバー、ステップ イン、再起動、またはアプリケーションの停止を行います。

C ソース コードのブレークポイントで停止しながら、現在のアドレス、生の 16 進データ、現在のコマンドのアセンブラーニーモニック、関連するレジスタや実行されているソース コード コマンドなどの情報を示す逆アセンブル ビューを開くことができます。

逆アセンブル ビューを開くには:

  1. ブレークポイントを含む C コード ソース ファイルが Visual Studio Code エディターで開かれていることを確認します。
  2. エディター ウィンドウで右クリックし、[逆アセンブリ ビューを開く] を選択するか、[コマンド パレット>の表示>] [逆アセンブリ ビューを開く] を選択します。
  1. リアルタイム対応アプリケーションが実行されている場合は停止します。

    az sphere device app stop --component-id <component id>
    
  2. デバッグを使用してリアルタイム対応アプリケーションを再開します。

    az sphere device app start --component-id <component id>
    

    このコマンドは、アプリケーションが実行されているコアを返します。

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. アプリケーションがビルドされた sysroot の Openocd フォルダーに移動します。 sysroots は、Azure Sphere SDK のインストール フォルダーにインストールされます。 たとえば、Windows では、フォルダーは既定で Linux の と /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linuxC:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd インストールされます。

  4. 次の例に示すようにを実行 openocd します。 この例では、アプリがコア 0 で実行されていることを前提としています。 アプリがコア 1 で実行されている場合は、"targets io0" を "targets io1" に置き換えます。

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。

  6. リアルタイム対応アプリケーション .out ファイルを含むフォルダーに移動し、GNU Arm Embedded Toolchain の一部である start arm-none-eabi-gdbに移動します。

    Windows コマンド プロンプト

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  7. OpenOCD サーバーは、:4444 で GDB サーバー インターフェイスを提供します。 デバッグのターゲットを設定します。

    target remote :4444

  8. これで、gdb コマンドを実行できるようになりました。 関数 HandleSendTimerDeferred にブレークポイントを追加します。

    break HandleSendTimerDeferred

  9. 接続されたターミナル エミュレーターは、リアルタイム対応アプリケーションからの出力を表示する必要があります。

  10. 新しい Azure Sphere コマンド プロンプト (Windows) またはターミナル ウィンドウ (Linux) を開きます。

  11. 高度なアプリケーション .imagepackage ファイルを含むフォルダーに移動します。

  12. アプリケーションが実行されている場合は、アプリケーションを停止し、デバッグを使用して再起動します。

    az sphere device app stop --component-id <ComponentId>
    
    az sphere device app start --debug-mode --component-id <ComponentId>
    
  13. ターミナル エミュレーターを開き、ポート 2342 で 192.168.35.2 への Telnet または TCP 接続を確立して、上位レベルのアプリの出力を表示します。

  14. 次のコマンドを使用して gdb を起動します。

    Windows コマンド プロンプト

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    メモ

    Azure Sphere SDK には複数の sysroot が付属しているため、「アプリケーション ランタイム バージョン、sysroots、Beta API」で説明されているように、アプリケーションが異なる API セットをターゲットにすることができます。 sysroots は、 Sysroots の Azure Sphere SDK インストール フォルダーにインストールされます。

  15. リモート デバッグ ターゲットを、ポート 2345 の IP アドレス 192.168.35.2 に設定します。

    target remote 192.168.35.2:2345
    
  16. 関数 SendMessageToRTApp にブレークポイントを追加します。

    break SendMessageToRTApp
    
  17. 「」と入力 c して続行し、Telnet/TCP ターミナルの出力を確認してから、リアルタイム アプリケーション デバッグ セッションを含むコマンド プロンプトまたはターミナル ウィンドウに切り替えます。

  18. 「」と入力 c して続行し、接続されたシリアル セッションの出力を確認します。

デバッグ セッション間でやり取りし、リアルタイム対応アプリケーションと高レベル アプリケーションを切り替えることができます。 次のような出力が 2 つの出力ウィンドウに表示されます。

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

各デバッグ セッションを終了するには、gdb プロンプトで「」と入力 q します。