mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
151 lines
6.1 KiB
Plaintext
151 lines
6.1 KiB
Plaintext
Done in the merge (started from the PyCharm version and bringing in things from PyDev):
|
|
|
|
- Added modules which were unused in PyCharm but are used in PyDev.
|
|
|
|
- execfile was upgraded to the PyDev version (it had errors with BOM in utf-8).
|
|
|
|
- pydevd_file_utils: automatically doing normcase.
|
|
|
|
- pyded: multiprocessing supporting 2 approaches (use new connection/use same connection).
|
|
|
|
- pydev_monkey: fixes from PyDev to properly deal with windows command lines.
|
|
|
|
- Private variables (name-mangled) are now evaluated (so they can be hovered).
|
|
|
|
- Exceptions raised from lines with a #@IgnoreException are ignored.
|
|
|
|
- Fixed exception changing variable in django debugging.
|
|
|
|
- Made debugging with Django breakpoints a bit faster.
|
|
|
|
- Exceptions separated by caught/uncaught, so, it's no longer needed to check
|
|
an additional attribute to check it.
|
|
|
|
- When exception is thrown evaluating breakpoint condition, the debugger will stop
|
|
(can be configured in main_debugger.suspend_on_breakpoint_exception).
|
|
|
|
- #@DontTrace comments can be used on methods so that they are ignored when stepping
|
|
in (needs UI for CMD_ENABLE_DONT_TRACE).
|
|
|
|
- Code which stops tracing inside python properties integrated (CMD_SET_PROPERTY_TRACE).
|
|
|
|
- Find Referrers integrated.
|
|
|
|
- Using same facade for IPython integration.
|
|
|
|
- When the code is interrupted, the buffer in the python side is cleared.
|
|
|
|
- GEvent debugging: improved PyDev not to use the threading module (uses the thread
|
|
primitives directly), so, gevent debugging can work even if pydevd is used for
|
|
remote debugging.
|
|
|
|
Also, the gevent debugging should probably be closer to the stackless debugging,
|
|
where we actually show the live stackless threads -- so, we should show the live
|
|
gevent greenlets -- which the current version doesn't do (future work).
|
|
|
|
- Supporting Jython 2.2 onwards (note: CPython only tested with 2.7/3.3)
|
|
|
|
- When there are big sets/tuples/lists/dicts, the items won't be all shown so that the
|
|
debugger speed doesn't suffer (the user should use the console if he wants to see
|
|
those items in this case). The limit was set to show up to 300 items (pydevd_resolver.MAX_ITEMS_TO_HANDLE)
|
|
|
|
- Monkey-patching qt (QThread/QRunnable) to enable the debugger to work.
|
|
Notes:
|
|
- It must be imported before the user actually runs its code (as the definitions of QThread/QRunnable
|
|
are monkey-patched), so, for the remote debugger to work, pydevd must be imported at the start of
|
|
the program, even if pydevd.settrace will only be used later on.
|
|
|
|
Things to be fixed in PyCharm:
|
|
--------------------------------
|
|
|
|
1. CMD_VERSION now should receive that it wants breakpoints by ID (and it
|
|
should give a breakpoint id which should be used to remove it later
|
|
when setting a breakpoint).
|
|
|
|
2. Setting breakpoint: the func_name is not being properly passed from PyCharm
|
|
(and as such, PyCharm debugging is slower than it should be).
|
|
|
|
Note that it works passing 'None', but the func_name should be given when possible.
|
|
|
|
I.e.:
|
|
|
|
class MyClass(object):
|
|
def __init__(self):
|
|
print('here') # Break here: '__init__' as func_name
|
|
print(a)
|
|
|
|
def bar(self):
|
|
print('bar') # Break here: 'bar' as func_name
|
|
|
|
3. Note (may not need to change anything):
|
|
Removed support for removing breakpoint without knowing its type (i.e.:
|
|
remove breakpoint tried to remove a breakpoint if the type wasn't
|
|
python-line nor django-line, now, it'll give an exception).
|
|
|
|
4. break_on_exceptions_thrown_in_same_context / ignore_exceptions_thrown_in_lines_with_ignore_exception
|
|
|
|
These are currently set in the bulk operation to add exceptions, but
|
|
it does make sense to create a separate command for that (but it's only
|
|
worth doing it when/if PyCharm gets an UI to add it).
|
|
|
|
5. UI to ignore exception from additional places (not only from #@IgnoreException code-comments)
|
|
i.e.: UI for CMD_IGNORE_THROWN_EXCEPTION_AT.
|
|
|
|
6. UI to show the current exception (i.e.: deal with CMD_SEND_CURR_EXCEPTION_TRACE and
|
|
CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED in the client side).
|
|
|
|
7. When an exception is detected on a breakpoint condition evaluation, we'll send
|
|
a CMD_GET_BREAKPOINT_EXCEPTION (which should be handled by PyCharm to show some
|
|
UI notification).
|
|
|
|
8. The CMD_ENABLE_DONT_TRACE must be sent from the UI to skip methods which have
|
|
an #@DontTrace above it.
|
|
|
|
9. The CMD_SET_PROPERTY_TRACE must be sent from the UI to skip setter/getter/deleter
|
|
python properties.
|
|
|
|
10. Integrate find referrers UI in PyCharm. In the backend it uses a CMD_RUN_CUSTOM_OPERATION with:
|
|
from pydevd_referrers import get_referrer_info
|
|
get_referrer_info
|
|
|
|
11. CMD_RELOAD_CODE has to be integrated (when a file changes it should be issued
|
|
for 'hot' auto-reload of the code -- note that it's not needed if the
|
|
user already has some sort of auto-reload builtin -- i.e.: django without the noreload option).
|
|
|
|
12. Console Completions: See: pydev_ipython_console_011.PyDevFrontEnd.getCompletions
|
|
Now we're completing as they come from the IPython backend (i.e.: not stripping %
|
|
for magic commands).
|
|
|
|
13. In PyDev, interrupt can be used to clear the current buffer (whereas in PyCharm it's only
|
|
possible to activate it to stop the execution of a command) -- note that this is only a
|
|
client-side limitation.
|
|
|
|
14. Console GUI event loop can have some UI integrated.
|
|
Note that the user can enable it manually (i.e.: by writing something as "%gui qt"
|
|
the qt backend is integrated, but it's possible to call 'enableGui' with the
|
|
backend to use from PyCharm too -- in PyDev this is an option with the possible backends).
|
|
|
|
|
|
Things to be fixed in PyDev:
|
|
--------------------------------
|
|
|
|
.Provide UI for 'smart step into' (later)
|
|
|
|
. Check what to do with 'message' from xml (later)
|
|
|
|
. Deal with sendSignatureCallTrace (later)
|
|
|
|
. Set IPYTHONENABLE to False/True to use IPython console (later)
|
|
|
|
|
|
Manual test:
|
|
---------------
|
|
|
|
* Support for IPython GUI event loop in console
|
|
* Django template debugging
|
|
* Gevent debugging
|
|
* Smart step into
|
|
* Collection of type information of arguments in debug mode
|
|
* Ability to stop tracing
|
|
* Ability to run debugger and console on remote interpreter
|