Browse Source

Document expression evaluator in Debugger panel

Hugo Locurcio 10 months ago
parent
commit
36bb7e5ac5
1 changed files with 50 additions and 3 deletions
  1. 50 3
      tutorials/scripting/debug/debugger_panel.rst

+ 50 - 3
tutorials/scripting/debug/debugger_panel.rst

@@ -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.
 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.
 a breakpoint in your code.
 
 
 It gives you a `stack trace <https://en.wikipedia.org/wiki/Stack_trace>`__,
 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**.
 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
 Profiler
 --------
 --------