共用方式為


對即時可用的應用程式進行偵錯

重要

這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。

RTApp 會使用隨 Azure Sphere SDK 一起安裝的 OpenOCD 進行偵錯,以及安裝為 ARM GNU Embedded Toolchain 一部分的 GDB 版本。

使用 Visual Studio 對 RTApp 進行偵錯

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

    遠端 GDB 調試程式按鈕

  2. 如果系統提示您建置專案,請選取 [ ]。 Visual Studio 會編譯即時可用的應用程式、建立映像套件、 側載 到面板上,並在偵錯模式中啟動它。 側載 表示應用程式會透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。

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

  3. 根據預設,[ 輸出 ] 視窗會顯示 [裝置輸出] 的 輸出。 若要查看調試程式的訊息,請從 [顯示輸出來源:] 下拉功能表中選取 [偵錯]。 您也可以透過 >[偵錯 Windows] 功能表檢查程式反組譯碼、緩存器或記憶體。

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

在 C 原始碼的斷點停止時,您可以開啟 顯示目前位址的反組譯 碼視窗 、目前命令的組譯工具助記鍵,以及涉及的緩存器或正在執行的原始程式碼命令等資訊。

若要開啟 反組譯碼 視窗:

  1. 確定 Visual Studio 中已開啟包含斷點的 C 程式代碼原始程式檔。
  2. 選取 [偵> Windows>反組譯碼],或按 Alt+8。

使用 Visual Studio Code 對 RTApp 進行偵錯

Visual Studio Code 會按 F5 或從左側列的偵錯檢視執行偵錯命令來進行偵錯。 在範例中,.vscode/launch.json已經存在,因此偵錯會立即啟動。 在新的應用程式中,偵錯會先詢問這是 HLApp 或 RTApp,並從您的答案建立 .vscode/launch.json。 接著會啟用偵錯。

當您在 C 原始程式碼中的斷點停止時,您可以開啟反組譯碼檢視,其中顯示目前位址、原始十六進位數據、目前命令的彙編工具助記項,以及涉及的緩存器或正在執行的原始程式碼命令等資訊。

若要開啟反組譯碼檢視:

  1. 確定 Visual Studio Code 編輯器中開啟包含斷點的 C 程式代碼原始程序檔。
  2. 在編輯器視窗中按兩下滑鼠右鍵,然後選取 [開啟反組譯碼檢視],或選取 [檢視>命令選擇區>開啟反組譯碼檢視]。

使用 CLI 對 RTApp 進行偵錯

  1. 啟動應用程式以進行偵錯:

    azsphere device app start --component-id <component id>
    

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

  2. 流覽至應用程式所建置之 sysroot 的 Openocd 資料夾。 在本快速入門中,sysroot 是 5+Beta2004。 sysroot 會安裝在 Azure Sphere 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 上執行,請將 「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"
    
  4. 使用 PowerShell、Windows 命令提示字元或 Linux 命令殼層開啟命令行介面。

  5. 瀏覽至包含應用程式 .out 檔案並啟動 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 Sphere 裝置時,Azure Sphere 部署工具預設會刪除所有現有的應用程式。 若要避免在開發彼此通訊的應用程式時發生此情況,您必須將應用程式標示為 合作夥伴。 當您部署其中一個應用程式時,將不會刪除其合作夥伴。 如需詳細資訊,請參閱 將應用程式標示為合作夥伴

疑難排解

如果您遇到問題,請參閱 針對即時可用的應用程式進行疑難解答。