高度なアプリケーションをデバッグする

  1. デバイスが USB で PC に接続されていることを確認します。 [ スタートアップ項目の設定 ] メニューで、[ Azure Sphere App (HLCore)] を選択します。 ここで、Azure Sphere App は現在の高度なアプリケーションの名前であるか 、F5 キーを押します。

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

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

    イメージ パッケージのイメージ ID は、[出力>の表示>] [出力の表示] [ビルド出力] の出力に注意してください。 イメージ ID は、 後で「チュートリアル: クラウド デプロイを作成する」で使用します

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

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

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

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

  1. Visual Studio でブレークポイントを含む C コード ソース ファイルが開かれていることを確認します。
  2. [Windows>逆アセンブリのデバッグ]> を選択するか、Alt キーを押しながら 8 キーを押します。
  1. F5 キーを押してプロジェクトをビルドしてデバッグします。 プロジェクトが以前にビルドされていない場合、またはファイルが変更され、再構築が必要な場合、Visual Studio Code はデバッグを開始する前にプロジェクトをビルドします。

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

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

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

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

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

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

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

アプリケーションをデバッグするには、アプリケーションを停止し、デバッグを使用して再起動します。

az sphere device app stop --component-id <ComponentId>
az sphere device app start --debug-mode --component-id <ComponentId>

次の情報が表示されます。

<ComponentID>
App state   : debugging
GDB port    : 2345
Output port : 2342
Core        : High-level
Command completed successfully in 00:00:00.9121174.
  1. コマンド プロンプトを開き、任意の Windows ターミナル クライアント を使用して Telnet または生 TCP 接続を確立し、プロセスから出力ストリームを読み取ります。 IP アドレスとして 192.168.35.2、ポートとして 2342 を指定します。

  2. PowerShell、Windows コマンド プロンプト、または Linux コマンド シェルを使用して、コマンド ライン インターフェイスを開きます。 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 インストール フォルダーにインストールされます。

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

    target remote 192.168.35.2:2345
    
  4. 選択した gdb コマンドを実行します。 例えば:

    break main
    
    c
    

    コマンドと c コマンドはbreak、エントリ時にブレークポイントを メイン() に設定し、ブレークポイントの後にそれぞれ実行を続行します。 gdb には多数のドキュメント ソースが用意されています。