偵錯高階應用程式
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
確定您的裝置已透過USB連線到您的電腦。 在 [設定啟動專案] 功能表中,選取 Azure Sphere 應用程式 (HLCore),其中 Azure Sphere 應用程式是您目前高階應用程式的名稱,或按 F5。
如果系統提示您建置專案,請選取 [ 是]。 Visual Studio 會編譯應用程式、建立映像套件、 側載 到面板上,並在偵錯模式中啟動它。 側載 表示應用程式會透過有線連線直接從電腦傳遞,而不是透過雲端傳遞。
請注意檢視>輸出>顯示輸出中映像套件的影像識別碼:建置輸出。 您稍後將在教學課程:建立雲端部署中使用映像標識碼。
根據預設,[ 輸出 ] 視窗會顯示 [裝置輸出] 的 輸出。 若要查看調試程式的訊息,請從 [顯示輸出來源:] 下拉功能表中選取 [偵錯]。 您也可以透過 >[偵錯 Windows] 功能表檢查程式反組譯碼、緩存器或記憶體。
然後 ,您可以使用 Visual Studio 調試程式 來設定斷點、暫停、逐步執行、逐步執行、重新啟動或停止應用程式。
在 C 原始碼的斷點停止時,您可以開啟 顯示目前位址的反組譯 碼視窗 、目前命令的組譯工具助記鍵,以及涉及的緩存器或正在執行的原始程式碼命令等資訊。
若要開啟 反組譯碼 視窗:
- 確定 Visual Studio 中已開啟包含斷點的 C 程式代碼原始程式檔。
- 選取 [偵>錯 Windows>反組譯碼],或按 Alt+8。
按 F5 建置和偵錯專案。 如果專案先前尚未建置,或檔案已變更並重建是必要的,Visual Studio Code 會在偵錯開始之前建置專案。
等候數秒,讓 Visual Studio Code 建置應用程式、建立映像套件、將其部署至面板,然後在偵錯模式中啟動它。 您會在一路上的 [輸出 ] 窗格中看到狀態更新。
首先,CMake 會判斷是否需要建置應用程式。 如果是,焦點會移至輸出視窗,以顯示 CMake/Build 的輸出。
接下來,[ 輸出 ] 窗格會在映射套件部署至裝置時顯示結果。 最後,偵錯控制台會接收焦點,並顯示調試程序輸出。
使用 Visual Studio Code 調試程式來設定斷點、暫停、逐步執行、逐步執行、重新啟動或停止應用程式。
當您在 C 原始程式碼中的斷點停止時,您可以開啟反組譯碼檢視,其中顯示目前位址、原始十六進位數據、目前命令的彙編工具助記項,以及涉及的緩存器或正在執行的原始程式碼命令等資訊。
若要開啟反組譯碼檢視:
- 確定 Visual Studio Code 編輯器中開啟包含斷點的 C 程式代碼原始程序檔。
- 在編輯器視窗中按兩下滑鼠右鍵,然後選取 [開啟反組譯碼檢視],或選取 [檢視>命令選擇區>開啟反組譯碼檢視]。
若要對應用程式進行偵錯,請停止它,然後使用偵錯重新啟動它:
azsphere device app stop --component-id <ComponentId>
azsphere 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 或原始 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 Sphere SDK 隨附多個 sysroot,讓應用程式可以以不同的 API 集合為目標,如應用程式運行時間版本、sysroots 和 Beta API 中所述。 sysroots 會安裝在 Sysroots 下的 Azure Sphere SDK 安裝資料夾中。
將遠端偵錯目標設定為埠 2345 上的 IP 位址 192.168.35.2:
target remote 192.168.35.2:2345
執行您選擇的任何 gdb 命令。 例如:
break main
c
break
和c
命令會在項目設為main() 時設定斷點,然後分別在斷點之後繼續執行。 有許多檔來源可供 gdb 使用。