diff options
| author | Rick Levine <rick@xoab.us> | 2023-02-16 11:33:07 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-16 11:33:07 -0800 |
| commit | 30c73dc39c1ac814d0c63ec102c7f8c2b993fdd0 (patch) | |
| tree | f7a370401cb0a590cb939b20ed897d97a2a92c26 | |
| parent | 643903a40f8009ad3eafcab362f7d112cabd3ffb (diff) | |
| parent | 9ba194124c0b33676b0f3af51f203c1787d33b06 (diff) | |
Merge pull request #2074 from inkstitch/rlevine/pycharm_debug_instructions
Pycharm debugging info
| -rw-r--r-- | lib/debug.py | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/lib/debug.py b/lib/debug.py index 83dd1766..0d6af104 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,63 @@ 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: + + # 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. From the Pycharm "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. Create a symbolic link in the Inkscape extensions directory to the + # top-level directory of your git repo. On a mac, for example: + # cd ~/Library/Application\ Support/org.inkscape.Inkscape/config/inkscape/extensions/ + # ln -s <full path to the top level of your Ink/Stitch git repo> + # On other architectures it may be: + # cd ~/.config/inkscape/extensions + # ln -s <full path to the top level of your Ink/Stitch git repo> + # Remove any other Ink/Stitch files or references to Ink/Stitch from the + # extensions directory, or you'll see duplicate entries in the Ink/Stitch + # extensions menu in Inkscape. + # + # 5. 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 + # + # 6. In Pycharm, either click on the green "bug" icon if visible in the upper + # right or press Ctrl-D to start debugging.The PyCharm debugger pane will + # display the message "Waiting for process connection..." + # + # 7. Do some action in Inkscape which invokes 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. + 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 +121,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.") |
