偵錯高階應用程式
確定您的裝置已透過 USB 連接到電腦。 在 [設定啟動專案] 功能表中,選取[Azure 球體應用程式 (HLCore) 其中 Azure 球體應用程式是您目前高階應用程式的名稱,或按F5。
如果系統提示您建立專案,請選取 [ 是]。 Visual Studio 會編譯應用程式、建立影像套件、 側載 至白板,然後以偵錯模式啟動。 側載 表示應用程式是透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。
請注意,[檢視> 輸出顯示] 輸出來源:組建輸出> 中的圖像套件圖像識別碼。 您稍後將在教學課程中使用圖像識別碼 :建立雲端部署。
根據預設,[ 輸出] 視窗會顯示 [裝置輸出] 的輸出。 若要查看來自偵錯工具的郵件,請從 [顯示輸出來源:] 下拉式功能表中選取 [偵錯]。 您也可以透過 [偵錯>Windows] 功能表,對程式進行拆解、註冊或記憶體檢查。
接著,您可以使用 Visual Studio 偵錯工具 來設定中斷點、暫停、重迭、步入、重新開機或停止應用程式。
當您停在 C 原始程式碼的中斷點時,您可以開啟一個顯示目前位址的[分解] 視窗、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之來原始程式碼命令等資訊。
若要開啟 [拆解] 視窗:
- 確定包含中斷點的 C 程式碼來源檔案已在 Visual Studio 中開啟。
- 選取 [偵錯>Windows>Disassembly],或按Alt+8。
按 F5 以建立及偵錯專案。 如果專案先前尚未建立,或是檔案已變更且需要重建,Visual Studio Code會在偵錯開始之前建立專案。
等候數秒Visual Studio Code來建立應用程式、建立影像套件、部署到白板,然後以偵錯模式啟動。 一路走來,您會在 [ 輸出 ] 窗格中看到狀態更新。
首先,CMake 會判斷是否需要建立應用程式。 若是如此,焦點會移至輸出視窗,顯示來自 CMake/Build 的輸出。
接下來,[ 輸出 ] 窗格會在影像套件部署到裝置時顯示結果。 最後,偵錯主機會接收焦點,並顯示偵錯工具輸出。
使用Visual Studio Code偵錯工具來設定中斷點、暫停、重迭、步入、重新開機或停止應用程式。
當您停在 C 原始程式碼的中斷點時,您可以開啟一個 Disassembly 檢視,該檢視會顯示目前位址、原始十六進位資料、目前命令的組合器 mnemonic,以及包含的登錄或正在執行之原始程式碼命令等資訊。
若要開啟 [分解] 檢視:
- 請確定包含中斷點的 C 程式碼來源檔案已在Visual Studio Code編輯器中開啟。
- 在編輯器視窗中按一下滑鼠右鍵,然後選取[開啟分解檢視] 或選取 [檢視>命令調色盤>開啟分解檢視]。
若要偵錯應用程式,請停止該應用程式,然後以偵錯方式重新開機:
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.
開啟命令提示字元,並使用任何 Windows 終端機客戶 端建立 Telnet 或 RAW TCP 連線,以讀取程式中的輸出串流。 將 192.168.35.2 指定為 IP 位址,並將 2342 指定為埠。
使用 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 安裝資料夾中。
將遠端偵錯目標設定為埠 2345 上的 IP 位址 192.168.35.2:
target remote 192.168.35.2:2345
執行您選擇的任何 gdb 命令。 例如:
break main
c
c
和break
命令會在專案進入主要 () 時設定中斷點,然後分別在中斷點之後繼續執行。 gdb提供許多檔來源。