偵錯高階應用程式

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

    遠端 GDB 偵錯工具按鈕

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

    請注意,[檢視> 輸出顯示] 輸出來源:組建輸出> 中的圖像套件圖像識別碼。 您稍後將在教學課程中使用圖像識別碼 :建立雲端部署

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

接著,您可以使用 Visual Studio 偵錯工具 來設定中斷點、暫停、重迭、步入、重新開機或停止應用程式。

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

若要開啟 [拆解] 視窗:

  1. 確定包含中斷點的 C 程式碼來源檔案已在 Visual Studio 中開啟。
  2. 取 [偵錯>Windows>Disassembly],或按Alt+8
  1. 按 F5 以建立及偵錯專案。 如果專案先前尚未建立,或是檔案已變更且需要重建,Visual Studio Code會在偵錯開始之前建立專案。

  2. 等候數秒Visual Studio Code來建立應用程式、建立影像套件、部署到白板,然後以偵錯模式啟動。 一路走來,您會在 [ 輸出 ] 窗格中看到狀態更新。

    首先,CMake 會判斷是否需要建立應用程式。 若是如此,焦點會移至輸出視窗,顯示來自 CMake/Build 的輸出。

    接下來,[ 輸出 ] 窗格會在影像套件部署到裝置時顯示結果。 最後,偵錯主機會接收焦點,並顯示偵錯工具輸出。

使用Visual Studio Code偵錯工具來設定中斷點、暫停、重迭、步入、重新開機或停止應用程式。

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

若要開啟 [分解] 檢視:

  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 或 RAW TCP 連線,以讀取程式中的輸出串流。 將 192.168.35.2 指定為 IP 位址,並將 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 球體 SDK 會隨附多個 sysroots ,讓應用程式可以按照 應用程式執行時間版本、sysroots 和 Beta API中所述,以不同的 API 集為目標。 Sysroots 會安裝在 Sysroots下的 Azure 球體 SDK 安裝資料夾中。

  3. 將遠端偵錯目標設定為埠 2345 上的 IP 位址 192.168.35.2:

    target remote 192.168.35.2:2345
    
  4. 執行您選擇的任何 gdb 命令。 例如:

    break main
    
    c
    

    cbreak 命令會在專案進入主要 () 時設定中斷點,然後分別在中斷點之後繼續執行。 gdb提供許多來源。