-
Notifications
You must be signed in to change notification settings - Fork 14
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
Localsplus and details #4
Localsplus and details #4
Conversation
Add link to object for each frame displayed via !pystack Add "details" (additionally to "repr") to !pyobj Display localsplus as "details" of frame objects Display attributes (slots and dict) as "details" for other python objects
…ts, tp_dictoffset != 0 but still no dict
Wow, this is amazing work! I'm glad you've found PyExt useful. This pull request looks good enough to accept as-is. There are a few things I might end up touching up later. For example, I'll probably go back to the v141 toolchain. Microsoft's EngExtCpp has trouble building on newer versions of v142 for me, so I'm playing it safe for now. There are a couple warnings (signed/unsigned mismatch, narrowing conversion) that I'll have to look at. Also, I'm not sure how I feel about Thanks for spending so much time working on this, and contributing your changes! |
Thanks for the feedback! Actually,
|
Just wanted to say thank you @radoering - clicking through |
@SeanCline: At first, thank you for the great tool! We have been using it for some years and it really simplifies the analysis of Python dumps a lot!
In the last few weeks, I implemented some enhancements to make it even more comfortable to analyse Python dumps:
When using !pyobj, there is a new section "Details" at the end. There, names and values of attributes (slots and dict) of the object are displayed. This is especially useful for objects of user defined classes.
When calling repr() with pretty=true, the representation of PyObjects contains a link to the PyObject. This is especially useful for dicts containing objects of user defined classes and thus for investigating an attribute of an object in more detail.
When using !pystack, there is a link to each PyFrameObject. In the "details" of the frame, the names and values of localsplus (local, cell and free variables) are displayed.
With these enhancements, it is often sufficient to call !pystack and then just click on links to navigate to the object of interest.
I also wrote some tests for the new features (tested locally with Python 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8).
Maybe you like the enhancements and want to merge them?