Intuitive Debugger Beta: A Complete Debugging Overhaul

Hey Developers!

We’re excited to announce a beta for a feature that completely revamps the Studio debug experience: the brand new Intuitive Debugger.

The Intuitive Debugger makes a number of changes that we believe greatly improve both the functionality and UX of Studio’s debugging features. These include:

  • Visibility and control over Breakpoint runtime contexts.
  • Better defaults + customization in debug information tables.
  • A streamlined look and feel for all debug-related windows.
  • A complete reimplementation of backend logic to provide dependable tools that “just work.”

The beta can be enabled by toggling Studio > Beta Features > Intuitive Debugger.

Note: Previously set Breakpoints will not be carried over.

See below for a more detailed breakdown of what the Intuitive Debugger provides, alongside a couple of things still being worked on!


New Features

Breakpoint Contexts

1

The Edit Breakpoints menu now provides full control over the contexts in which a Breakpoint will be hit! This affects the behavior of a Breakpoint at runtime when Scripts are replicated across the Client and Server data models.

The Edit Breakpoint menu can be accessed by right-clicking on a Breakpoint in either the Script Editor gutter or the Breakpoints Window.

Breakpoints Window

2

The new Breakpoints window offers information and functionality in a more thorough, customizable and efficient manner than ever before! Specifically:

  • All instances of a Breakpoint across DMs can now be individually viewed and toggled.
  • Individual Breakpoint actions have been moved to the right-click menu.
  • Breakpoint information column visibility can now be customized to suit individual preferences.

Call Stack Window

3

The Call Stack window has also been overhauled to offer the most informative and streamlined user experience possible. Improvements include:

  • Multithreaded debugging visibility, such that all active threads can be monitored from the same place.
  • In-window step buttons that allow for a more efficient debugging workflow.
  • The ability to customize Call Stack information column visibility.

Watch Window

4

Lastly, we’ve made enhancements to the Watch Window in order to present information in a more unified and discoverable manner. Here’s what has changed:

  • The Local and Global tabs have been merged and replaced with a “Scope” column. This allows local, global and upvalue variables to be monitored side-by-side.
  • A new dropdown menu allows for the filtering of variables by scope.
  • A search bar has been added to help navigate variables and watches by name.

Looking Forward

During the beta, you can expect us to continue working to improve the Intuitive Debugger while listening to and implementing changes based on your feedback. There are a couple of issues we are already aware of:

  • We are using a new UI framework for this feature, so expect some UI bugs while we work to iron some issues out.
  • There may be unpredictable behavior when using the Intuitive Debugger to debug Plugins. We’re working to resolve these issues as soon as we can, but until then, be wary of this usage.
  • The ability to add a contextual breakpoint during a play session by right-clicking the Script Editor gutter is not yet implemented.
  • Variable values cannot yet be displayed on-hover during a debug session.

Thank you for being a part of this process— we’re very excited about the impact of this release on your development experience, and we look forward to hearing your feedback!

Many thanks to the following who’ve contributed to the Intuitive Debugger: @altisaltaccount, @swish741, @Regal_Corgi, @windy0724, @ResetVector, @IcyTides, @ameowth07, @iriszh, @Rusi_002, @HugoBLH, @MoonRocketApollo, @idevride, @MetalMax2

Happy debugging!

122 Likes

This topic was automatically opened after 11 minutes.

Glad to see studio moving towards becoming a better all-in-one IDE and game development service. Debugging properly was always one of the things I tended to shy away from on studio. (print statement debuggers rise!)

18 Likes

Really awesome to see the love which debugging has been getting lately! Are there any plans to revamp similar functionalities, such as the microprofiler?

3 Likes

Cool update for the debugger! Cant wait to try out.

2 Likes

Really the only thing the IDE is missing for me is indentation lines now.

Good to see roblox adding new stuff!

2 Likes

Thank you

Now even my embarrassingly large amount of bugs can look neat and organized too :smile:

4 Likes

Stay tuned for an update on that :wink:

18 Likes

Are there any plans to add multi lines support ? This’ll save a lot of time.

1 Like

Make a variable tracker, so when you play you get all the variables and contents.

2 Likes

Now that clicking a breakpoint in the code editor toggles it’s enable/disable state instead of removing it, is there any way to individually remove breakpoints?

2 Likes

yes.
log message = print()

1 Like

You can right click on a breakpoint then remove it from the context menu popup.

4 Likes

The days of using print() for debugging are now behind us. This debugger is beautiful.

7 Likes

Finally!! With this update I no longer have to do print(“bruh”) to check my code works! Thanks Roblox!!

3 Likes

I run multiple MOOCs revolving around Roblox Studio. As an instructor, one of the first assignments I give my students is effectively using Roblox Studio’s debugger. Many students struggle with my Roblox Studio debugger unit the most.

One thing I visibly see in many posts in this thread are people willing to omit print statements in favor of breakpoints. I would recommend continuing using print statements for logging purposes.

My grievances of the new Intuitive Debugger:

It is difficult to expand cells to see the raw variables. Previously, double-clicking on an edge of a cell would expand it to view the full text. I would like to double-click the edges to view the raw value of the logical flow of my LuaSourceContainer without having to hover over the value itself:
image

I would love to be able to bind my Middle Mouse button to instantly remove a breakpoint. Currently, the hotkey context for removing breakpoints can only be binded to keystrokes, not mouse button clicks:
image
These shortcuts do not work because the built-in text editor takes precedence of the shortcuts.

Overall, I enjoyed the new features incorporated into the debugger. Logically stepping through your code via the call stack instead of having to move over to the “Script” tab is a nice touch.

3 Likes

You guys release better things every day!

Performance in general is very slow, and I am often waiting a few seconds per line of “Step Into”, while the old debugger is virtually instant. I’m really hoping that this will be greatly improved during the beta.

This happened while quickly clicking “Step Into” repeatedly after reaching the last line.

 Argument 1 missing or nil  -  Standalone
  15:25:39.595  Stack Begin  -  Studio
  15:25:39.595  Script 'sabuiltin_Debugger.rbxm.Debugger.Src.Components.Common.DebuggerToolbarButtons', Line 31  -  Studio
  15:25:39.595  Script 'sabuiltin_Debugger.rbxm.Debugger.Src.Components.Common.DebuggerToolbarButtons', Line 54  -  Studio
  15:25:39.595  Script 'sabuiltin_Debugger.rbxm.Debugger.Packages._Index.DeveloperFramework.DeveloperFramework.StudioUI.PluginButton', Line 46  -  Studio
  15:25:39.595  Stack End  -  Studio

Hi Qualadore,
Thanks so much for mentioning these issues and for trying out the beta. There are indeed some optimizations that we haven’t yet implemented that should drastically improve the stepping speed, and we will prioritize implementing these optimizations. We will take a look at the error output you have mentioned as well.

1 Like

tldr: I wish you could step through and place breakpoints in all metatable functions

Wonderful changes. As someone who recently familiarized themself with the current stable debugger, I can say that these are improvements. One thing I have seen that is very helpful is the ability to create breakpoints inside metatable functions. The ability to step through these is a game changer for making more complex creations. I hope this is intended. I seem to be mistaken on this. I am realizing now that its possible to only step through the __call metamethod. I am not sure if this is how previous behavior was or not. I feel the ability to step through all metatable values is very important.

One problem I have noticed is that breakpoints will not function at all when placed on an empty line. I’m not sure if this is intended or a bug that wasn’t too critical to fix before beta testing.

Either way I am very happy with this and will continue to test it in the coming days.