跳轉到主要內容

除錯

由於TouchGFX應用程式是一組由TouchGFX Designer、TouchGFX Generator生成並由開發人員編寫的C++檔,因此可以像任何其他C++應用程式一樣除錯。

目標除錯

如果您正在使用像IAR Workbench、Keil uVision或STM32CubeIDE這樣的IDE,則可以直接使用IDE的可用機制進行目標除錯。 由TouchGFX Generator或直接從TouchGFX開發板設置生成的TouchGFX專案可以使用選定的工具鏈進行除錯。

Board bring up程式碼和TouchGFX AL只在目標開發板上執行,因此需要在那裡進行除錯。 應用程式的UI部分可以在目標上除錯或使用模擬器進行除錯。 在目標上,您通常會除錯性能問題等,如動畫速度、更新頻率和回應能力。 其他特定於UI的問題可以在目標上除錯,但使用模擬器除錯通常會更快。

模擬器除錯

除錯與UI相關的問題,如動畫動作、轉換、元素更新、程式邏輯等等;在大多數情況下,使用模擬器進行測試和除錯比每次燒錄開發板要高效得多。

TouchGFX應用程式還支援Visual Studio,並為其提供和維護一個專案檔案。 使用Visual Studio時,可以在除錯模式下運行模擬器,利用IDE的所有除錯功能。

如果想要使用模擬器進行除錯,您可以不局限於Visual Studio。 應用程式可以通過GCC進行編譯,如果使用不同的IDE,則很可能將其設置為除錯GCC編譯過的專案。 但是,您需要配置您的IDE,以便自己完成。

在Visual Studio中除錯

使用DebugPrinter

DebugPrinter類是一種在顯示器上列印除錯訊息的簡單方法,無需向螢幕添加TextArea或其他小部件。 例如,這種方法可用於顯示來自後端的事件、或FPS或渲染時間等。

在使用DebugPrinter之前,需要分配一個實例並將其傳遞給Application類。 例如,這可以在FrontendApplication的構造函數中實現:

除錯顯示器與影像緩衝區格式相容。 這裡,我們可以在gui/src/common/FrontendApplication.cpp中添加一個16bpp除錯印表機:

#include <gui/common/FrontendApplication.hpp>

#include <platform/driver/lcd/LCD16bpp.hpp>
LCD16DebugPrinter lcd16bppDebugPrinter;

FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap)
: FrontendApplicationBase(m, heap)
{
lcd16bppDebugPrinter.setPosition(0, 0, 240, 40);
lcd16bppDebugPrinter.setScale(2);
lcd16bppDebugPrinter.setColor(0x00); //black
Application::setDebugPrinter(&lcd16bppDebugPrinter);
}

在這裡,我們已經配置了DebugPrinter在上方寫入240 x 40像素。
在您的應用程式中,現在可以使用以下程式碼列印字串:

char debugStringBuffer[30];
void updateDebugString()
{
static int count = 0;
count++;
snprintf(debugStringBuffer, sizeof(debugStringBuffer), "tick: %d", count);
Application::getDebugPrinter()->setString(debugStringBuffer);
Application::invalidateDebugRegion();
}
Note
從ascii 32(空格)到ascii 126(’~’)的字元均可用。

DebugPrinter類

DebugPrinter實例必須相容所使用的LCD類。 該表列出了DebugPrinter類名稱:

LCD 類DebugPrinter類
LCD1bppLCD1DebugPrinter
LCD2bppLCD2DebugPrinter
LCD4bppLCD4DebugPrinter
LCD8bpp_ARGB2222LCD8ARGB2222DebugPrinter
LCD8bpp_ABGR2222LCD8ABGR2222DebugPrinter
LCD8bpp_RGBA2222LCD8RGBA2222DebugPrinter
LCD8bpp_BGRA2222LCD8BGRA2222DebugPrinter
LCD16bppLCD16DebugPrinter
LCD16bppSerialFlashLCD16DebugPrinter
LCD24bppLCD24DebugPrinter
LCD32bppLCD32DebugPrinter

使用與正在使用的LCD類匹配的DebugPrinter類。