Skip to content

Commit

Permalink
Added support for PyDev remote debugging.
Browse files Browse the repository at this point in the history
  • Loading branch information
sybrenstuvel committed Oct 28, 2016
1 parent 0c3333d commit db93017
Showing 1 changed file with 45 additions and 6 deletions.
51 changes: 45 additions & 6 deletions remote_debugger.py
Expand Up @@ -15,7 +15,7 @@
bl_info = {
'name': 'Remote debugger',
'author': 'Sybren A. Stüvel',
'version': (0, 2),
'version': (0, 3),
'blender': (2, 75, 0),
'location': 'Press [Space], search for "debugger"',
'category': 'Development',
Expand All @@ -39,15 +39,22 @@ class DebuggerAddonPreferences(AddonPreferences):
default='pycharm-debug-py3k.egg'
)

pydevpath = StringProperty(
name='Path of the PyDev pydevd.py file',
subtype='FILE_PATH',
default='pydevd.py'
)

def draw(self, context):
layout = self.layout
layout.prop(self, 'pydevpath')
layout.prop(self, 'eggpath')
layout.label(text='Make sure you select the egg for Python 3.x: pycharm-debug-py3k.egg ')


class DEBUG_OT_connect_debugger(bpy.types.Operator):
bl_idname = 'debug.connect_debugger'
bl_label = 'Connect to remote Python debugger'
class DEBUG_OT_connect_debugger_pycharm(bpy.types.Operator):
bl_idname = 'debug.connect_debugger_pycharm'
bl_label = 'Connect to remote PyCharm debugger'
bl_description = 'Connects to a PyCharm debugger on localhost:1090'

def execute(self, context):
Expand All @@ -73,13 +80,45 @@ def execute(self, context):
return {'FINISHED'}


class DEBUG_OT_connect_debugger_pydev(bpy.types.Operator):
bl_idname = 'debug.connect_debugger_pydev'
bl_label = 'Connect to remote PyDev debugger'
bl_description = 'Connects to a PyDev debugger on localhost:5678'

def execute(self, context):
import sys

user_preferences = context.user_preferences
addon_prefs = user_preferences.addons[__name__].preferences

pydevpath = os.path.abspath(addon_prefs.pydevpath)

if not os.path.exists(pydevpath):
self.report({'ERROR'}, 'Unable to find pydevd.py at %r. Configure the addon properties '
'in the User Preferences menu.' % pydevpath)
return {'CANCELLED'}

dirname = os.path.dirname(pydevpath)
basename = os.path.basename(dirname)
if not any(basename in p for p in sys.path):
sys.path.append(dirname)

import pydevd
pydevd.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True,
suspend=False)

return {'FINISHED'}


def register():
bpy.utils.register_class(DEBUG_OT_connect_debugger)
bpy.utils.register_class(DEBUG_OT_connect_debugger_pycharm)
bpy.utils.register_class(DEBUG_OT_connect_debugger_pydev)
bpy.utils.register_class(DebuggerAddonPreferences)


def unregister():
bpy.utils.unregister_class(DEBUG_OT_connect_debugger)
bpy.utils.unregister_class(DEBUG_OT_connect_debugger_pycharm)
bpy.utils.unregister_class(DEBUG_OT_connect_debugger_pydev)
bpy.utils.unregister_class(DebuggerAddonPreferences)


Expand Down

0 comments on commit db93017

Please sign in to comment.