除錯器面板

Godot 的多項除錯工具(包含主除錯器)都集中於畫面下方的除錯器面板。點選 除錯器 分頁即可開啟。

../../../_images/overview_debugger.webp

除錯器面板分為多個分頁,每個分頁專注於不同的除錯任務。

堆疊追蹤

當 GDScript 編譯器執行至你程式碼中的中斷點時,堆疊追蹤分頁會自動開啟。

此分頁會顯示 堆疊追蹤,包含物件狀態資訊,以及多個可控制程式執行流程的按鈕。當偵錯器於中斷點暫停時,腳本編輯器行號旁會顯示綠色三角箭頭,指示目前中斷的程式碼行。

小訣竅

您可以透過點選腳本編輯器左側的裝訂線(行號左側)來建立斷點。將滑鼠懸停在該排水溝上時,您會看到出現一個透明的紅點,點擊放置斷點後,該紅點會變成不透明的紅點。再次點選紅點即可刪除斷點。以這種方式建立的斷點在編輯器重新啟動後仍然存在,即使退出編輯器時未儲存腳本也是如此。

你也可以在 GDScript 腳本中使用 breakpoint 關鍵字,於原始碼內建立中斷點。與用滑鼠點擊行號邊緣建立的中斷點不同,這種做法可讓中斷點隨版本控制同步到不同機器。

你可以使用右上角的按鈕執行以下操作:

  • 跳過所有中斷點(保留斷點但暫時不觸發),方便未來持續除錯。

  • 複製當前錯誤訊息。

  • 步入 程式碼:跳到下一行,若進入函式則會逐行執行。

  • 步過 程式碼:跳到下一行,但遇到函式時不會進入內部,直接跳過。

  • 中斷:暫停遊戲執行。

  • 繼續:於中斷點或暫停後繼續執行遊戲。

備註

目前不支援在 工具腳本 上使用偵錯器與中斷點。無論在腳本編輯器中設置的中斷點,或使用 breakpoint 關鍵字,皆會被忽略。你可以改用列印語句來顯示變數內容。

錯誤

此分頁會顯示遊戲運行時的錯誤與警告訊息。

你可在 專案設定 > 除錯 > GDScript 中關閉特定警告。

運算器

此分頁內建運算式求值器 REPL,可即時計算表達式,功能比堆疊追蹤分頁中的變數樹更強大。

當專案在除錯器中暫停時(因中斷點或腳本錯誤),你可於上方文字欄輸入運算式。若專案仍在運作,則此欄位無法編輯,需先設中斷點。只要取消勾選 執行時清空,輸入的運算式可跨執行次數保留,但關閉編輯器後會遺失。

運算式以 Godot 表達式語言 執行,可進行運算並呼叫部分內建函式。可存取成員變數或同一作用域下的區域變數,也能直接輸入常數,等同小型計算機。

參考以下腳本範例:

var counter = 0

func _process(delta):
    counter += 1
    if counter == 5:
        var text = "Some text"
        breakpoint
    elif counter >= 6:
        var other_text = "Some other text"
        breakpoint

若偵錯器在**第一個** breakpoint 行暫停,下列運算式均有效:

  • 常數運算式: 2 * PI + 5

  • 成員變數: countercounter ** 2sqrt(counter)

  • 區域變數或參數: deltatexttext.to_upper()

若偵錯器在**第二個** breakpoint 行暫停,下列運算式有效:

  • 常數運算式: 2 * PI + 5

  • 成員變數: countercounter ** 2sqrt(counter)

  • 區域變數或參數: deltaother_textother_text.to_upper()

效能分析

效能分析器用於檢視專案執行時,哪些程式碼正在運作,以及其對效能的影響。

也參考

效能分析器的詳細使用說明,請參閱專屬頁面:效能分析器

視覺化分析

視覺化分析器可用於監控每個畫面在 CPU 與 GPU 上分別花費的時間,協助追蹤因繪圖產生的潛在效能瓶頸。

警告

視覺化分析器僅測量繪圖相關任務(例如 draw call)消耗的 CPU 時間, 包含腳本執行、物理等其他 CPU 任務。如需追蹤非繪圖任務,請使用標準「效能分析」分頁。

要使用視覺化分析器,請執行專案,切換到下方面板的 Visual Profiler 分頁,然後點選 開始

啟動視覺化分析器後,等待數秒再停止,即可看到分析結果:

開始 後等數秒,再按 停止 即可看到結果

小訣竅

你也可勾選 自動開始,專案下次執行時自動啟動分析。注意:自動開始設定不會跨編輯器啟動保存。

分析進行時會即時顯示各種分類與結果。圖表左側為 CPU 幀圖,右側為 GPU 幀圖。

按下 停止 結束分析後,分析結果仍會保留於面板上,即使停止專案執行亦可瀏覽,但關閉編輯器後資料將消失。

點選左側分類可於右側 CPU/GPU 圖表標示。也可點擊圖表游標,跳至指定幀數並反白左側分類。

結果可切換顯示為每幀毫秒數,或目標幀時間的百分比(目前預設為 16.67 毫秒=60 幀/秒)。

若在分析期間出現幀率飆高,圖表可能會縮放不當。此時可停用 自動縮放至全幀,聚焦於 60 FPS 以上部分。

備註

請注意,視覺化分析器的結果會因視窗解析度差異而**有很大變化**。若使用 disabledcanvas_items 延展模式,則由視窗大小決定解析度。

比較多次分析結果時,請確保所有情境下的視窗大小一致。

視覺化分析器支援所有繪圖後端(Forward+、Mobile、相容模式),但報告分類會依目前繪圖方法與啟用的圖形功能不同而異。例如使用 Forward+ 時,單純 2D 場景加陰影光源時會出現以下分類:

2D 場景於視覺化分析器的範例結果

2D 場景於視覺化分析器的範例結果

再舉 Forward+ 為例,若 3D 場景啟用陰影與多種特效,則會產生下列分類:

3D 場景於視覺化分析器的範例結果

3D 場景於視覺化分析器的範例結果

注意在 3D 範例中,部份分類名稱會標記 (Parallel),代表 GPU 正同時執行多項任務。這通常意味著僅關閉單一功能未必大幅提升效能,因其他任務仍需序列執行。

備註

由於平台限制,在 macOS 上使用相容性轉譯器時不支援視覺效能分析器。

網路分析器

網路分析器會列出所有透過多人 API 通訊的節點,並為每個節點統計進出封包數量,同時提供即時頻寬監控圖表。

備註

頻寬監控儀**不**會考慮 高階多人連線 API 的內建壓縮。更改壓縮演算法並不會影響此圖表顯示的數據。

效能監控

監視器會在遊戲執行時以圖表顯示多項指標,例如 FPS、記憶體用量、場景中的節點數量等。所有監視器都會自動追蹤統計資料,因此就算遊戲執行時沒有開啟某個監視器,你之後仍可開啟並查看數值如何變化。

也參考

除了預設效能監控外,還可依需求建立 自訂效能監控,追蹤專案內任意數值。

顯示記憶體

顯示記憶體 分頁會顯示遊戲執行時所有佔用顯示記憶體的資源清單,列出路徑、資源類型、格式及佔用量。右上角可見總顯示記憶體用量。

../../../_images/video_ram.png

其他

其他 分頁提供運作時辨識所點擊控制節點的工具:

  • 點擊節點 會顯示所點擊節點在場景樹的位置。

  • 點擊節點型別 會顯示點擊節點的類型。