リアルタイム対応アプリケーションをデバッグする
RTApps は、Azure Sphere SDK と共にインストールされる OpenOCD と、ARM GNU Embedded Toolchain の一部としてインストールされている GDB のバージョンを使用してデバッグされます。
Visual Studio を使用して RTApp をデバッグする
デバイスが USB で PC に接続されていることを確認します。 [ スタートアップ項目の設定 ] メニューで、[ Azure Sphere App (RT Core)] を選択します。 ここで、Azure Sphere App は現在のリアルタイム対応アプリケーションの名前であるか 、F5 キーを押します。
プロジェクトのビルドを求めるメッセージが表示されたら、[ はい] を選択します。 Visual Studio は、リアルタイム対応アプリケーションをコンパイルし、イメージ パッケージを作成し、ボードに サイドロード してデバッグ モードで起動します。 サイドローディング とは、クラウド経由で配信されるのではなく、有線接続を介してアプリケーションが PC から直接配信されることを意味します。
[出力>の表示>] [出力の表示] 出力のイメージ ID に注意してください。ビルド出力 デプロイを作成する準備ができたら、イメージ パッケージへのパスを知る必要があります。
既定では、[ 出力 ] ウィンドウにデバイス出力からの出力 が表示されます。 デバッガーからメッセージを表示するには、[出力の表示元] ドロップダウン メニューから [デバッグ] を選択します。 また、プログラムの逆アセンブリ、レジスタ、またはメモリを [デバッグ>] Windows メニューから調べることもできます。
Visual Studio は、GDB サーバーと OpenOCD の間の接続を設定して、標準の Visual Studio デバッグ インターフェイス (ブレークポイントの場合は F5、F6、F9 など) を RTApp 上で使用できるように、高レベル アプリと同じ方法で設定します。
C ソース コードのブレークポイントで停止している間、現在のアドレス、現在のコマンドのアセンブラーニーモニック、関連するレジスタや実行中のソース コード コマンドなどの情報を表示する 逆アセンブル ウィンドウ を開くことができます。
[逆アセンブリ] ウィンドウを開くには:
- Visual Studio でブレークポイントを含む C コード ソース ファイルが開かれていることを確認します。
- [Windows>逆アセンブリのデバッグ]> を選択するか、Alt キーを押しながら 8 キーを押します。
Visual Studio Code を使用して RTApp をデバッグする
Visual Studio Code は、 F5 キーを押すか、左側のバーのデバッグ ビューからデバッグ コマンドを実行することでデバッグされます。 サンプルでは、.vscode/launch.json が既に存在するため、デバッグはすぐに開始されます。 新しいアプリでは、デバッグではまず、これが HLApp か RTApp かを確認し、回答から .vscode/launch.json を作成します。 その後、デバッグが有効になります。
C ソース コードのブレークポイントで停止しながら、現在のアドレス、生の 16 進データ、現在のコマンドのアセンブラーニーモニック、関連するレジスタや実行されているソース コード コマンドなどの情報を示す逆アセンブル ビューを開くことができます。
逆アセンブル ビューを開くには:
- ブレークポイントを含む C コード ソース ファイルが Visual Studio Code エディターで開かれていることを確認します。
- エディター ウィンドウで右クリックし、[逆アセンブリ ビューを開く] を選択するか、[コマンド パレット>の表示>] [逆アセンブリ ビューを開く] を選択します。
CLI を使用して RTApp をデバッグする
デバッグのためにアプリケーションを起動します。
az sphere device app start --component-id <component id>
このコマンドは、アプリケーションが実行されているコアを返します。
アプリケーションがビルドされた sysroot の Openocd フォルダーに移動します。 このクイック スタートでは、sysroot は 5 + Beta2004 です。 sysroots は、Azure Sphere SDK のインストール フォルダーにインストールされます。 たとえば、Windows では、フォルダーは既定で Linux の と
/opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd
でC:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd
インストールされます。次の例に示すようにを実行
openocd
します。 この例では、アプリがコア 0 で実行されていることを前提としています。 アプリがコア 1 で実行されている場合は、"targets io0" を "targets io1" に置き換えます。PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。
アプリケーション .out ファイルを含むフォルダーに移動し、ARM GNU Embedded Toolchain の一部である を開始
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
OpenOCD サーバーは、:4444 で GDB サーバー インターフェイスを提供します。 デバッグのターゲットを設定します。
target remote :4444
選択した gdb コマンドを実行します。
パートナー アプリを使用して開発する
Azure Sphere デバイスにアプリケーションを読み込むと、Azure Sphere デプロイ ツールによって既定ですべての既存のアプリケーションが削除されます。 相互に通信するアプリケーションを開発するときにこの問題が発生しないようにするには、アプリケーションを パートナーとしてマークする必要があります。 いずれかのアプリケーションをデプロイしても、そのパートナーは削除されません。 詳細については、「 アプリケーションをパートナーとしてマークする 」を参照してください。
トラブルシューティング
問題が発生した場合は、「 リアルタイム対応アプリケーションのトラブルシューティング」を参照してください。