Blueprint Basics · Easy · 12 min

Debug Blueprints: Print String, Breakpoints, and Watching Values

Stop guessing why your Blueprint won't work. Print values to the screen, pause the game on a node with a breakpoint, step through one node at a time, and watch a variable change live — the exact workflow pros use to find any bug.

LevelEasy Time~12 min EngineUE 5.4+ Hands-on15 checkpoints

Before this: Event Graph Basics: BeginPlay, Nodes, and Wires Explained, Blueprint Variables: Store and Change Values to Drive Behaviour

By the end, you'll be able to
  • Use Print String to log values and confirm a piece of script actually ran
  • Set a breakpoint (F9) on a node to pause the game right there
  • Step through your graph one node at a time and read the highlighted execution flow
  • Watch a variable's live value while paused to spot the wrong number

"Why isn't my Blueprint working?"

Every single person who learns Blueprints hits this wall: you wire something up, you press Play, and… nothing happens. Or the wrong thing happens. The instinct is to stare at the wires and hope the bug jumps out. It almost never does.

The faster, calmer way is to make the Blueprint tell you what it's doing. Unreal gives you simple tools to print messages while the game runs, to pause the game on a specific node and look around, and to read the real value inside a variable at that exact moment. Once you can do that, debugging stops being magic and becomes a short checklist: did this run? what was the value here? where did it stop?

This lesson teaches that checklist. Nothing here is advanced — it's the everyday workflow you'll reach for forever. Tick off each step as you go.

Four words you'll use constantly

Tap a card to flip it

The four debugging moves, hands-on

Open any Blueprint that misbehaves (or the Blueprint from an earlier lesson). We'll add a print, set a breakpoint, step through it, and watch a value. Tick each step so you can come back where you left off.

  1. 1Drop in a Print String to confirm it ran

    In the Event Graph, drag off the white execution pin of the event or node you're suspicious of and search for 'Print String'. Connect it so it runs right after that node.

    Type something recognisable into its 'In String' box, like 'BeginPlay fired!'. Press Play. If the message appears in the top-left corner of the game view, that part of your script definitely ran.

    TipNo message on screen means that branch never executed — so the bug is upstream, before your Print String, not after it. That alone narrows the search hugely.

  2. 2Print an actual value, not just text

    Often the script runs but a number is wrong. Drag a variable (say your Health or Speed) onto the graph as a 'Get', then drag from it into the Print String's 'In String' pin — Unreal auto-adds a small convert node so the number becomes text.

    Now the printed line shows the real value at that moment, e.g. 'Health: 0'. Seeing the number is usually the moment the penny drops.

    TipGive each Print String a unique label like 'A:' or 'after damage:' so when several print at once you can tell which line is which.

  3. 3Set a breakpoint with F9

    Click a node to select it, then press F9. A small red marker appears on the node — that's a breakpoint. (Right-clicking the node and choosing 'Add Breakpoint' does the same thing.)

    Press Play. The moment execution reaches that node, the game pauses, Unreal brings the Blueprint Editor to the front, and the node is highlighted. The game is frozen exactly there, waiting for you.

    TipPut the breakpoint on the FIRST node you're unsure about. If the game pauses there, the script reached it; if it never pauses, execution never got that far.

  4. 4Step through one node at a time

    While paused, look at the debugging toolbar at the top of the Blueprint Editor. Use 'Step Into' / 'Step Over' to advance a single node. Each press moves the glowing execution marker along the wires.

    Watch where the glow goes. If a Branch sends the flow down the 'False' path when you expected 'True', you've found your bug — the condition is wrong. Click 'Resume' (or the continue button) to let the game run on.

    TipStepping reveals the path the game actually took, not the path you assumed. Branches going the 'wrong' way is one of the most common beginner bugs, and stepping makes it obvious.

  5. 5Watch a variable's live value

    Right-click a variable node (or a data pin) and choose 'Watch this value'. An eye-style marker is added. Now, whenever the game is paused at a breakpoint, that value is displayed right on the node.

    You can also simply hover the mouse over any data pin while paused to see a tooltip with its current value. Either way, you're reading the truth — the number the game actually has, not what you hoped it had.

    TipWatching the variable that 'should' change is the fastest way to catch a value that's stuck at zero, never gets set, or gets overwritten a moment later.

  6. 6Clean up before you ship

    When the bug is fixed, remove your debug aids. Delete the temporary Print String nodes, and clear breakpoints (right-click a node → 'Remove Breakpoint', or use the Blueprint Editor's debugging menu to remove all).

    Leftover Print Strings clutter the screen and the log; leftover breakpoints will keep pausing your game and confuse you (or anyone else) later.

    TipPrint String has a 'Development Only' setting that's on by default, so it won't run in a shipping build — but it still clutters your editor, so tidy up anyway.

Debugging shortcuts to remember

  • F9 Toggle a breakpoint on the selected node
  • F10 Step Over — run the next node and pause again (default; check your editor's bindings)
  • F11 Step Into — go inside a called function/macro node (default; check your editor's bindings)
  • F5 Resume — continue running until the next breakpoint (default; check your editor's bindings)
  • ` (backtick) Open the in-game console (e.g. to type 'stat fps') while testing

Print to the on-screen view vs. the log

console
stat fps        ; show frames-per-second while you test
stat unit       ; frame / game / GPU timings, to spot slow logic
DumpConsoleCommands ; list available console commands if you're curious
Print String can write to the screen, to the Output Log, or both (its node has 'Print to Screen' and 'Print to Log' tick-boxes). To read the log itself, open Window → Output Log in the editor. These console commands are handy while testing in Play mode — press the backtick (`) key to open the console, type, and hit Enter.

You pressed Play but your Print String message never appears on screen. Before assuming Print String is broken, what does its silence actually tell you — and what should you check first?

Print String vs. breakpoints — when to use which

You want a quick yes/no: did this run? what's this value right now? It needs no pausing and you can watch a sequence of values scroll by as the game plays.

It's perfect for things that happen fast or repeatedly (every frame, on each overlap), where pausing on every hit would be maddening. You just read the printed stream.

ChallengeTry it yourself: catch a stuck value

Take a Blueprint with a number variable (for example a Health or Score the earlier lessons had you create). Deliberately or accidentally, it isn't updating the way you expect. Use the debugging workflow to PROVE what's happening: confirm the script runs, read the real value, pause where it's set, and watch it change (or fail to).

Hint 1

Start with a Print String that prints the variable, placed right after the node that's supposed to change it. Does the printed number ever change?

Hint 2

If the print shows a wrong number, set a breakpoint (F9) on the node that sets the variable, press Play, and trigger the action.

Hint 3

While paused, right-click the variable and choose 'Watch this value' (or hover its pin) to see what it actually holds at that instant.

Hint 4

Step one node at a time and watch which path the execution glow takes — a Branch going the unexpected way is often the whole problem.

QuizCheck yourself

1You add a Print String after a node and press Play, but nothing prints. What is the most likely conclusion?

2Which key sets (or clears) a breakpoint on the node you've selected in a Blueprint?

3While paused at a breakpoint, what is the quickest way to see the real, current value of a variable?

You can now

If you can tick all of these, you have the everyday Blueprint debugging toolkit:

  • Add a Print String to confirm a piece of script ran
  • Print a variable's value (with the auto-added convert node) to read the real number
  • Set and clear a breakpoint on a node with F9
  • Step through a graph one node at a time and read where the execution glow goes
  • Watch a variable's live value (or hover a pin) while paused
  • Tidy up — remove debug Print Strings and breakpoints when the bug is fixed
Finished the steps?

Mark this lesson complete

We'll remember it on your Academy page and unlock the next lesson below.

Questions beginners ask

My Print String message flashes and disappears too fast to read. How do I keep it up longer?

The Print String node has a 'Duration' setting (default around two seconds). Select the node, open the Details panel, and raise the Duration to keep the message on screen longer. You can also tick 'Print to Log' and read it at leisure in Window → Output Log, which keeps a full history.

I set a breakpoint but the game never pauses on it. What's wrong?

Almost always, execution simply never reaches that node — which is itself a useful finding. Check that the event meant to trigger it is firing, that this Blueprint actor exists in the level, and that no Branch above it is diverting the flow. Move the breakpoint earlier in the chain to discover exactly how far execution does get.

Will my Print Strings show up in the final packaged game?

Print String defaults to 'Development Only', so it won't run in a Shipping build. That said, it's good practice to delete temporary debug prints anyway — they clutter the screen and the log during development, and leaving them in is an easy habit to regret later.

What's the difference between Step Into and Step Over?

Both advance execution one step while paused. 'Step Over' runs the next node and pauses again at the following node, treating a function call as a single step. 'Step Into' goes inside a called function or macro so you can debug its internals node by node. Use Step Over to skim the main flow, Step Into when you suspect the bug is inside a function you called.

Get the next lessons as they land

New Academy lessons, UE5 tips and tool releases — straight to your inbox. No spam, unsubscribe anytime.

Report a bug