偵錯支援即時的應用程式
RTApps 會使用 OpenOCD 偵錯,隨 Azure 球體 SDK 一起安裝,以及作為 ARM GNU 內嵌工具鏈一部分安裝的 GDB 版本。
使用 Visual Studio 偵錯 RTApp
確定您的裝置已透過 USB 連接到電腦。 在 [設定啟動專案] 功能表中,選取[Azure 球體應用程式 (RT 核心) 其中 Azure 球體應用程式是目前支援即時應用程式的名稱,或按F5。
如果系統提示您建立專案,請選取 [ 是]。 Visual Studio 會編譯支援即時功能的應用程式、建立影像套件、 將它側載 到白板上,然後以偵錯模式啟動它。 側載 表示應用程式是透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。
請注意,在 [檢視>輸出>顯示]輸出中的圖像套件圖像識別碼:組建輸出 當您準備好建立部署時,您必須知道圖像套件的路徑。
根據預設,[ 輸出] 視窗會顯示 [裝置輸出] 的輸出。 若要查看來自偵錯工具的郵件,請從 [顯示輸出來源:] 下拉式功能表中選取 [偵錯]。 您也可以透過 [偵錯>Windows] 功能表,對程式進行拆解、註冊或記憶體檢查。
Visual Studio 會在 GDB 伺服器和 OpenOCD 之間設定連線,讓您可以使用標準 Visual Studio 偵錯介面 (F5、F6、F9 等中斷點,在 RTApp 上) ,就像在高階應用程式上一樣。
當您停在 C 原始程式碼的中斷點時,您可以開啟一個顯示目前位址的[分解] 視窗、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之來原始程式碼命令等資訊。
若要開啟 [拆解] 視窗:
- 確定包含中斷點的 C 程式碼來源檔案已在 Visual Studio 中開啟。
- 選取 [偵錯>Windows>Disassembly],或按Alt+8。
使用 Visual Studio Code 偵錯 RTApp
Visual Studio Code會透過按F5或從左側列的偵錯檢視執行偵錯命令來偵錯。 在樣本中,已存在 .vscode/launch.json,因此偵錯會立即開始。 在新應用程式中,偵錯會先詢問這是 HLApp 還是 RTApp,然後從您的答案建立 .vscode/launch.json。 偵錯會隨即啟用。
當您停在 C 原始程式碼的中斷點時,您可以開啟一個 Disassembly 檢視,該檢視會顯示目前位址、原始十六進位資料、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之原始程式碼命令等資訊。
若要開啟 [分解] 檢視:
- 請確定包含中斷點的 C 程式碼來源檔案已在Visual Studio Code編輯器中開啟。
- 在編輯器視窗中按一下滑鼠右鍵,然後選取[開啟分解檢視] 或選取 [檢視>命令調色盤>開啟分解檢視]。
使用 CLI 偵錯 RTApp
啟動偵錯應用程式:
az sphere device app start --component-id <component id>
此命令會傳回應用程式執行的核心。
流覽至應用程式所建置之 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
如
openocd
以下範例所示執行。 此範例假設應用程式在核心 0 上執行。 如果應用程式在核心 1 上執行,請將「目標 io0」取代為「目標 io1」。使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令列介面。
流覽至包含應用程式 .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
OpenOCD 伺服器在 :4444 提供 GDB 伺服器介面。 設定偵錯的目標。
target remote :4444
執行您選擇的任何 gdb 命令。
與合作夥伴應用程式一起開發
當您將應用程式載入 Azure 球體裝置時,Azure 球體部署工具預設會刪除所有現有的應用程式。 若要避免在您開發彼此通訊的應用程式時發生這種情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴 。
故障 排除
如果您遇到問題,請參閱 疑難排解支援即時的應用程式。