Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

除錯器面板

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 圖表標示。也可點擊圖表游標,跳至指定幀數並反白左側分類。

You can switch the result display between a time value (in milliseconds per frame) or a percentage of the target frametime. The debugger/profiler_target_fps editor setting controls the target frametime value according to the specified FPS.

若在分析期間出現幀率飆高,圖表可能會縮放不當。此時可停用 自動縮放至全幀,聚焦於 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

其他

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

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

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