-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhanced debugger for godot 3.0 #11940
Conversation
Did you see my proposal in the 2.1 issue? Seems like it from your two last checkboxes, but making sure :P |
|
looking great! |
I can help you move it when I get back home on Tuesday
…On Oct 14, 2017 1:56 PM, "Geequlim" ***@***.***> wrote:
[image: 2017-10-15 00-51-40]
<https://user-images.githubusercontent.com/6964556/31577540-18daa606-b143-11e7-8ebb-6a1ad0d938c8.png>
Why I didn't move the Live Scene Tree to the normal Scene Tree dock is I
didn't find a good way to manage the tree with the debugger but it is
contained in another place.
That would make the code more mess 😕
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#11940 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AF-Z20LJHGXxDMi4XMXw3EwlJ3YSVh3Tks5ssOfCgaJpZM4PxryO>
.
|
|
Seems the github delayed to synchronize the commit from the origin branch. |
@reduz Are you going to have a review and mege this before alpha2 ? |
Hi @Geequlim I was planning this week to add the tools so you can properly implement: |
@reduz Great! |
why not adding the remote scene tree to a dock in the same slot as Scene and make it active when debugging? (or add a setting to allow enable it automatically) |
@Geequlim alright, added the support you were missing. You can acess SceneTreeDock by using
so, basically add your remote tree editor with
When debug begins, show it by doing:
and when debug ends, hide it by doing:
and the remote debug menu can go away! |
All features are implemented now. |
Some screenshots to build up the hype? :D |
@akien-mga Here we go! |
This is excelsior! |
@@ -532,56 +553,77 @@ void ScriptDebuggerRemote::_send_object_id(ObjectID p_id) { | |||
if (!obj) | |||
return; | |||
|
|||
List<PropertyInfo> pinfo; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually like my code for handling requesting objects better. It's newer than yours, fixes a few bugs, sends Object IDs and can handle when an object is too big to send.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember you have changed the limit to 8MB it should be enough for most objects. I will check your code again and make it more reliable with this. But it is necessary to change something to send more usable informations like script constant values and member variables of script instance.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
member variables of script instance should already be obtainable with get_property_list to the object, they have the usage flag: PROPERTY_USAGE_SCRIPT_VARIABLE , so no extra code is needed.
@@ -231,11 +252,11 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue) | |||
} | |||
} | |||
|
|||
{ //locals | |||
packet_peer_stream->put_var(locals.size()); | |||
{ //globals |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea of sending globals is fine, but in GDScript, globals are constants and there are a ton of them. Sending them every time seems like too much.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Infact only autoloads will be sent in GDScript.
inspected_object->prop_list.clear(); | ||
inspected_object->prop_values.clear(); | ||
bool is_new_object = false; | ||
if (remote_objects.has(id)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I like this, makes the history work.
} | ||
|
||
for (int i = 0; i < prop_count; i++) { | ||
for (int i = 0; i < properties.size(); i++) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please check my code for sending objects, it fixes a few bugs since 2.1 regarding objects being too big that may crash the debugger, so you may want to use it, or part of it.
Remove remote inspector panel
…simple dictionary editor implement
Ignore all script constants in the global section of the breakpoint stack. Check property size before send to avoid too large of data be sent. Fix crash while clear the remote objects from the debugger.
@akien-mga Rebased to latest master. @reduz I try to use your code to send properties but I got some problems
So I keep the code of mine for send objects with your size checking logic for properties. |
@Geequlim If you want to keep your code but use the size checking it's fine |
@Geequlim I don't mind, but please make sure to use my code to check that no buffer overrides exist, otherwise the editor will crash. |
@Geequlim also, cant seem to drag values in the inspector |
@reduz I have take the size checking code inside the PR before merged. But I’m not sure it is safe enough as the size checking for each property to the max size of the stream peer as it did before. |
Some improvements for the debugger of godot 3.0. As disscused with @reduz in #10891.
The PR will take the enhanced debugger like the cuurent debugger 2.1.4 to the master branch.
betterdictionary editorthan the 2.1 version.