The Debugger - Enhanced Watch Window

Hi developers,

Similar to our efforts on the Script Editor last year, we are putting in a lot of focus behind the scenes on the Studio Luau debugger. These efforts will manifest as nice upgrades over the course of this year - capabilities and stability will improve, UI will get nicer and more intuitive, and you will start being able to debug against Team Test servers and eventually get more information from live experiences. :slight_smile:

Today, we’re releasing the first batch of changes to the Debugger. These are mostly upgrades to the Watch window, enabling greater insight into program state at breakpoints.

Variable Previews

We’ve heard from many of you that it was difficult to see table / metatable contents and length in the “Watch” widget.

To provide insight into variables at a glance, we improved Watch window readability by adding preview of the table/array/instance fields in the value column as follows:

  • Table - show fields in the Lua table format, order fields alphabetically
  • Array - show items in the Lua table array format, ordered by index
  • Instance - show instance name followed by fields in the Lua table format, order fields alphabetically

Before:

After:

Show Table Address

To help you uniquely identify tables, table addresses will now be displayed in the value column in the Watch widget, next to the table preview. This will be especially handy for nested and recursive tables.

Object Children Added

Currently, there is no way to inspect children of the instance that appear in the Watch widgets. To fix this, we added the “Children” pseudo item to instance in the Watch widget. This instance will show items returned by the getChildren() method.

Before:

After:

Many thanks to @Ov_vO2, @ResetVector, @MetalMax2, @WheretIB, @IcyTides, and @windy0724 for these fresh new features! More upgrades are coming - down with bugs!

212 Likes

This is so hot and now I wont have to cry whenever I get my dumb script broken

37 Likes

This is a really good job and very good for the scripters and such and love to see roBlox getting more organized with the scripting. Even though I am not a scripter this can help a lot with finding problems and such!

9 Likes

This definitely helps give more specific info, and a wider understanding of what’s going on. :slight_smile: Also, is it just me or is the output only giving table addresses and not expandable tables?

6 Likes

Now this… this i like.
You guys made so many changes to make this whole experience better and more flexible. (Engine and studio features)

6 Likes

Fabulous!

Now I know what’s breaking my scripts when testing! :grinning_face_with_smiling_eyes:

6 Likes

Make sure you open up your output settings, and uncheck the box marked “Log Mode” if you want expandable tables. Although disabling this lowers the performance of the output, so usually if I’m not needing to view tables, I leave it on.

image

14 Likes

As someone who doesn’t use the debugger, (and often relies on just spamming print("does this work??") The changes that have been done to the debugging tools may actually get me to use them - They’re more intuitive and useful (because who wants to stare at a table address to see if their table is working).

Really good work

5 Likes

I have never really used the debugger, but this update seems promising! I’ll be sure to try this out!

4 Likes

How can we view them outside of the debugger?

4 Likes

Welp, this is great, but nothing beats the gold old

print("ahdodowpeprpepeiwirywy2u3ieox”)

Seriously though now I can finally use the debugger instead of making a custom gui or printing out the tables values. Thanks!

5 Likes

Cool update. I kinda wish that it kept “Table” and then, expanded said table to a pretty json when you click on it. I’m not a fan of looking at tables in a singular line. I don’t really think that’s all that helpful either when programming. I guess it’s cool for small stuff but, unfortunately, I deal with large stuff. Probably a minority in that aspect.

4 Likes

Curious to learn where you want to view them outside of the debugger?
The table memory address can be shown in output window by enabling the checkbox below. Currently, other info above can only be viewed in debugger.

5 Likes

I dont really use the output, I wish the Developer Console woult get this kind of attention, it could really use new UI.

7 Likes

Still going to use print(“HEREEE”) and print(var):roll_eyes:

12 Likes

Sick update! I have no need to use a bunch of recursive table print()s at runtime now!

2 Likes

What does “Variadic” mean? I have seen it many times

SmartSelect_20210709-091914_Chrome

4 Likes

Variadic means it takes a variable amount of arguments (e.g. print(), function(…), etc)

3 Likes

Yeah same. I have no idea how to use this debugger.

2 Likes