共用方式為


偵錯支援即時的應用程式

RTApps 會使用 OpenOCD 偵錯,隨 Azure 球體 SDK 一起安裝,以及作為 ARM GNU 內嵌工具鏈一部分安裝的 GDB 版本。

使用 Visual Studio 偵錯 RTApp

  1. 確定您的裝置已透過 USB 連接到電腦。 在 [設定啟動專案] 功能表中,選[Azure 球體應用程式 (RT 核心) 其中 Azure 球體應用程式是目前支援即時應用程式的名稱,或按F5

    遠端 GDB 偵錯工具按鈕

  2. 如果系統提示您建立專案,請選取 [ 是]。 Visual Studio 會編譯支援即時功能的應用程式、建立影像套件、 將它側載 到白板上,然後以偵錯模式啟動它。 側載 表示應用程式是透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。

    請注意,在 [檢視>輸出>顯示]輸出中的圖像套件圖像識別碼:組建輸出 當您準備好建立部署時,您必須知道圖像套件的路徑。

  3. 根據預設,[ 輸出] 視窗會顯示 [裝置輸出] 的輸出。 若要查看來自偵錯工具的郵件,請從 [顯示輸出來源:] 下拉式功能表中選取 [偵錯]。 您也可以透過 [偵錯>Windows] 功能表,對程式進行拆解、註冊或記憶體檢查。

Visual Studio 會在 GDB 伺服器和 OpenOCD 之間設定連線,讓您可以使用標準 Visual Studio 偵錯介面 (F5、F6、F9 等中斷點,在 RTApp 上) ,就像在高階應用程式上一樣。

當您停在 C 原始程式碼的中斷點時,您可以開啟一個顯示目前位址的[分解] 視窗、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之來原始程式碼命令等資訊。

若要開啟 [拆解] 視窗:

  1. 確定包含中斷點的 C 程式碼來源檔案已在 Visual Studio 中開啟。
  2. 取 [偵錯>Windows>Disassembly],或按Alt+8

使用 Visual Studio Code 偵錯 RTApp

Visual Studio Code會透過按F5或從左側列的偵錯檢視執行偵錯命令來偵錯。 在樣本中,已存在 .vscode/launch.json,因此偵錯會立即開始。 在新應用程式中,偵錯會先詢問這是 HLApp 還是 RTApp,然後從您的答案建立 .vscode/launch.json。 偵錯會隨即啟用。

當您停在 C 原始程式碼的中斷點時,您可以開啟一個 Disassembly 檢視,該檢視會顯示目前位址、原始十六進位資料、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之原始程式碼命令等資訊。

若要開啟 [分解] 檢視:

  1. 請確定包含中斷點的 C 程式碼來源檔案已在Visual Studio Code編輯器中開啟。
  2. 在編輯器視窗中按一下滑鼠右鍵,然後選取[開啟分解檢視] 或選取 [檢視>命令調色盤>開啟分解檢視]

使用 CLI 偵錯 RTApp

  1. 啟動偵錯應用程式:

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

    此命令會傳回應用程式執行的核心。

  2. 流覽至應用程式所建置之 sysroot 的 Openocd 資料夾。 在此快速入門中,sysroot 為 5+Beta2004。 Sysroots 會安裝在 Azure 球體 SDK 安裝資料夾中。 例如,在 Windows 上,預設會在 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd Linux 安裝資料夾, /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd

  3. openocd 以下範例所示執行。 此範例假設應用程式在核心 0 上執行。 如果應用程式在核心 1 上執行,請將「目標 io0」取代為「目標 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"
    
  4. 使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令列介面。

  5. 流覽至包含應用程式 .out 檔案和 start arm-none-eabi-gdb 的資料夾,這是 ARM GNU Embedded Toolchain 的一部分:

    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
    
  6. OpenOCD 伺服器在 :4444 提供 GDB 伺服器介面。 設定偵錯的目標。

    target remote :4444

  7. 執行您選擇的任何 gdb 命令。

與合作夥伴應用程式一起開發

當您將應用程式載入 Azure 球體裝置時,Azure 球體部署工具預設會刪除所有現有的應用程式。 若要避免在您開發彼此通訊的應用程式時發生這種情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴

故障 排除

如果您遇到問題,請參閱 疑難排解支援即時的應用程式