Document expression evaluator in Debugger panel

This commit is contained in:
Hugo Locurcio
2024-10-05 00:33:56 +02:00
parent 67e37b547c
commit 36bb7e5ac5

View File

@@ -10,10 +10,10 @@ debugger panel at the bottom of the screen. Click on **Debugger** to open it.
The debugger panel is split into several tabs, each focusing on a specific task.
Debugger
--------
Stack Trace
-----------
The Debugger tab opens automatically when the GDScript compiler reaches
The Stack Trace tab opens automatically when the GDScript compiler reaches
a breakpoint in your code.
It gives you a `stack trace <https://en.wikipedia.org/wiki/Stack_trace>`__,
@@ -55,6 +55,53 @@ This is where error and warning messages are printed while running the game.
You can disable specific warnings in **Project Settings > Debug > GDScript**.
Evaluator
----------
This tab contains an expression evaluator, also known as a :abbr:`REPL (Read-Eval-Print Loop)`.
This is a more powerful complement to the Stack Variables tree available in the Stack Trace tab.
When the project is interrupted in the debugger (due to a breakpoint or script
error), you can enter an expression in the text field at the top. If the project
is running, the expression field won't be editable, so you will need to set a
breakpoint first. Expressions can be persisted across runs by unchecking **Clear on Run**,
although they will be lost when the editor quits.
Expressions are evaluated using :ref:`Godot's expression language
<doc_evaluating_expressions>`, which allows you to perform arithmetic and call
some functions within the expression. Expressions can refer to member variables,
or local variables within the same scope as the line the breakpoint is on. You
can also enter constant values, which makes it usable as a built-in calculator.
Consider the following script:
::
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
If the debugger breaks on the **first** line containing ``breakpoint``, the following
expressions return non-null values:
- **Constant expression:** ``2 * PI + 5``
- **Member variable:** ``counter``, ``counter ** 2``, ``sqrt(counter)``
- **Local variable or function parameter:** ``delta``, ``text``, ``text.to_upper()``
If the debugger breaks on the **second** line containing ``breakpoint``, the following
expressions return non-null values:
- **Constant expression:** ``2 * PI + 5``
- **Member variable:** ``counter``, ``counter ** 2``, ``sqrt(counter)``
- **Local variable or function parameter:** ``delta``, ``other_text``, ``other_text.to_upper()``
Profiler
--------