diff options
Diffstat (limited to 'lib/debug.py')
| -rw-r--r-- | lib/debug.py | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/lib/debug.py b/lib/debug.py index 83dd1766..a340df18 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -47,7 +47,7 @@ class Debug(object): self.log("Debug logging enabled.") def init_debugger(self): - # How to debug Ink/Stitch: + # How to debug Ink/Stitch with LiClipse: # # 1. Install LiClipse (liclipse.com) -- no need to install Eclipse first # 2. Start debug server as described here: http://www.pydev.org/manual_adv_remote_debugger.html @@ -55,8 +55,55 @@ class Debug(object): # 3. Create a file named "DEBUG" next to inkstitch.py in your git clone. # 4. Run any extension and PyDev will start debugging. + ### + + # To debug with PyCharm: + + # 0. You must use the PyCharm Professional Edition and _not_ the Community + # Edition. Jetbrains has chosen to make remote debugging a Pro feature. + # To debug Inkscape python extensions, the extension code and Inkscape run + # independently of PyCharm, and only communicate with the debugger via a + # TCP socket. Thus, debugging is "remote," even if it's on the same machine, + # connected via the loopback interface. + # + # 1. pip install pydev_pycharm + # + # pydev_pycharm is versioned frequently. Jetbrains suggests installing + # a version at least compatible with the current build. For example, if your + # PyCharm build, as found in menu PyCharm -> About Pycharm is 223.8617.48, + # you could do: + # pip install pydevd-pycharm~=223.8617.48 + # + # 2. In the Run menu, choose "Edit Configurations..." and create a new + # configuration. Set "IDE host name:" to "localhost" and "Port:" to 5678. + # You can leave the default settings for all other choices. + # + # 3. Touch a file named "DEBUG" at the top of your git repo, as above. + # + # 4. In the execution env for Inkscape, set the environment variable + # PYCHARM_REMOTE_DEBUG to any value, and launch Inkscape. If you're starting + # Inkscape from the PyCharm Terminal pane, you can do: + # export PYCHARM_REMOTE_DEBUG=true;inkscape + # + # 5. Either click on the green "bug" icon or press Ctrl-D to start debugging. + # The PyCharm debugger pane will display the message "Waiting for process + # connection..." + # + # 6. Do some action in Inkscape which runs Ink/Stitch extension code, and the + # debugger will be triggered. If you've left "Suspend after connect" checked + # in the Run configuration, PyCharm will pause in the "self.log("Enabled + # PyDev debugger.)" statement, below. Uncheck the box to have it continue + # automatically to your first set breakpoint. + + # Thanks to lexelby for the hints needed to puzzle this out. + + try: - import pydevd + if 'PYCHARM_REMOTE_DEBUG' in os.environ: + import pydevd_pycharm + else: + import pydevd + except ImportError: self.log("importing pydevd failed (debugger disabled)") @@ -66,7 +113,12 @@ class Debug(object): sys.stderr = devnull try: - pydevd.settrace() + if 'PYCHARM_REMOTE_DEBUG' in os.environ: + pydevd_pycharm.settrace('localhost', port=5678, stdoutToServer=True, + stderrToServer=True) + else: + pydevd.settrace() + except socket.error as error: self.log("Debugging: connection to pydevd failed: %s", error) self.log("Be sure to run 'Start debugging server' in PyDev to enable debugging.") |
