[RELEASED] Debugging Essentials (5 essential tools to boost development)

Debugging Essentials is available on the Asset Store

22% Launch discount, from $45 for only $35…

  • Compatible with Unity 2017.x , 2018.x, 2019.x and 2020.x.
  • Works with >.Net 2.0, Mono, IL2CPP and ECS(DOTS).
  • Works with Native Rendering, URP and HDRP.
  • Supports all platforms (PC, Mac, Linux, Android, IOS, WebGL, etc).
  • Can be used in Editor and Build.
  • Source code included.

As lead programmer of our game D.R.O.N.E., with only 6 devs, I’m responsible for most core-coding including the network-code which I created from scratch. Our game is an arena shooter/builder multiplayer and we release it step by step through Steam Early Access. We are using our own Peer2Peer network architecture with instant host-migration in conjunction with Steam’s free relay networking.

I had a tough time dealing with our community’s reported bugs and issues where standard build-in tools weren’t enough.

Debugging Essentials contains 5 crucial tools which will save you tons of debugging hours and headaches, while making developing a lot more faster and enjoyable:

How often did it happen to you? You’re in play mode or in your build and you run into this particular issue/bug. What’s happening?? Ah I need to look at the state of these variables…Eh not possible without a restart => debug or attach => recompile => play or rebuild => reproduce => etc…There goes your time…

E.g. I was dealing with some very tricky networking/host migration bugs and was losing a lot of time making new offline test builds. Until I had enough…What if you could just easily navigate/search and deep inspect any little non-exposed variable at any moment in time?

This saved me tons of my time while making debugging a lot more enjoyable:

Runtime Hierarchy Window

  • NOTHING is hidden and EVERYTHING is selectable at any moment in real-time.
  • Search/navigate through all your Scenes.
  • Search/navigate all Assemblies with their classes and real-time static values sorted in categories.
  • Make/search and compare memory snapshots which get sorted by type and category.
  • Multiple search conditions on name/type with intuitive search display modes.
  • Disable/Enable/Delete/Duplicate any GameObject and Enable/Disable any component to e.g. test performance in a build.
  • ScrollView culling, can handle thousands of objects.

Runtime Deep Inspector

  • NOTHING is hidden and EVERYTHING is inspect-able at any moment in real-time.
  • Inspect ALL members (fields/properties/methods) on any Assembly- and Memory Object/GameObject/Component/Class/Struct, etc.
  • Deep Inspect ECS (DOTS).
  • Deep Inspect inside Arrays, Lists, Queues, Dictionaries, HashSets, etc.
  • Deep Inspect into unlimited levels.
  • Filter based on Fields, Properties, Methods, Inherited, Declared, Static, Instance, Public, Private and Protected.
  • Change primitive values.
  • Execute methods with primitive arguments.
  • Multiple search conditions on name/type with intuitive search display modes.
  • Deep search into multiple levels.
  • ScrollView culling, can handle thousands of members.

Runtime Camera Navigation

  • Override your camera at any moment to navigate through your game view with the same controls as in the Editor Scene View.
  • GameObject selection and focus for Deep Inspection.
  • Follow moving GameObjects while still being able to navigate around.
  • Time Scale adjustment to slow-mo or pause your game for Deep Inspection. While the camera keeps working the same. We used this feature to take our D.R.O.N.E. Steam Store Page screenshots.

Want to easily adjust/execute anything at runtime with your own created commands? Want to see Unity’s or your own logs at runtime? I’m using the Runtime Console all the time for testing/debugging in conjunction with the Runtime Hierarchy and Deep Inspector.

Runtime Console

  • Easily create your own commands for methods, properties, fields and delegates by only attaching a simple attribute.
  • Command parameters and default parameters.
  • Static and instance commands.
  • Admin and non-admin commands.
  • Remote network commands.
  • Command suggestion, auto-completion and displays values on fields and properties.
  • Shows Unity logs in Editor/Build.
  • Filter based on Commands/Logs/Warnings/Errors and Exceptions.
  • Show/Hide Stack.
  • Search for any logs with certain text.
  • Supports logging on other threads.
  • Quick links to Editor/Build logs.
  • ScrollView culling, can handle millions of logs without affecting performance.

Can you read the player build Log files to find issues? With my HTML Log files you don’t want to look at them again…

HTML Debug Logs

  • Log files can be can opened in any browser.
  • Logs display inside a frame and time header so you can see when something happened.
  • An actual layout on the logs instead of a bulk list.
  • Log colors make them easy to spot while scrolling through.
  • Stacks lines are nicely sorted.
  • Supports logging from other threads.
  • Multi-threaded, writes the log file from another thread.

Another issue solved => Player: “I had an issue with the game last night” => Me: “Can you send me your log file?” => Player: “Here it is” => Me: “It’s from today, it got overwritten…”.

  • Logs are saved by version and date, while normally build logs get overwritten with restarting the game.
  • Logs can automatically be deleted after x days.

6 Likes

reserved…

I just picked it up. I own all your other tools and thought a complete set would be nice. This one will definitely get used alot.

Thanks for pickup it up :slight_smile: Let me know what you think about it…

Looks very impressive. Curious to see some examples of you inspecting DOTs data.

Yes will post some today/tomorrow…

1 Like

Took a bit longer, as needed to do some updates for support. Basically all Worlds are accessible in Assembly mode. The entities themselves are stored in NativeArrays with pointers, currently working on being able to inspect pointer arrays, think that should be possible…Will be in the update then for next week.

6178944--676623--upload_2020-8-7_10-57-42.jpg
6178944--676617--upload_2020-8-7_10-50-52.jpg

1 Like

Cool stuff!

A couple of things:

Can it be made to suppress the Unity built-in console? When I get an error (while using “Developer Mode” in a build) it pops up both that and your console. Obviously, I only want yours. :slight_smile:

Also, I would like some events I can hook for when the console or hierarchy window are opened/closed. I have to do some gnarly management of our cursor locking and can only do so with such hooks. I’ve added ones of my own, but that kind of prevents me from easily installing updates you make. Figure others could use this as well.

Thanks for contacting. Very good point, I’m also wondering about this. I found this one so far:
https://discussions.unity.com/t/529294

Yes that are all great suggestions, will implement all for you now…

Oki I implemented it and it (version 1.08) is live on the Asset Store…Can also toggle it from the Runtime Console with console.disableUnityDevelopmentConsole command:

As for the events you can subscribe/unsubscribe to:
RuntimeConsole.onSetActive
RuntimeInspector.onSetActive

I also show all events in the Unity Inspectors now…

Let me know if everything works…

Wow… that was fast. Great work! Will grab this, thank you!

@eagle555 This looks very promising and I’d like to use this inside my Hololens app. Is there a way to display everything on a world canvas? If so, how?

Hi, currently it’s not possible. But I have this on roadmap…

Hello, just wanted to let you know that the name “Library” in folders is ignored by default in Plastic SCM and it might be being ignored from other version control software as well.

Hi, thanks for telling. I have renamed it…

I second the request for world-space!

1 Like

I’m testing it atm. Can you come to my Discord server to help test it?
https://discord.gg/HhepjD9

Hi, I assume this uses UGUI for the UI? That would mean it isn’t compatible with UI Toolkit as the new UI system renders over UGUI. Is there a plan to support UI Toolkit in the future?

Hi, thanks for contacting and good question. It uses the legacy GUI which doesn’t use any GameObjects, which is better for debugging, performance and memory scans.

1 Like

@eagle555 Hi trying to figure out how to use this with ECS/DOTS. I created a simple scene with a few gameobjects converted to entities. using the debugging essentials prefab I don’t see any of these entities/components/systems shown in your playmode gui.

could you provide a short example on how to do so? I’m using v1.18