pycharm remote debug

1. Edit Configurations >> click "+" button and select "Python Remote Debug" >> set debug server name, debug server ip(that remote server can access it) and port that debug server runs on.

2. Copy pycharm-debug.egg to python path(like windows ..../python2.7/lib/site-packages, or linux ..../python2.7/dist-packages), and then extract it egg file(linux uses unzip pycharm-debug.egg, windows can uses software like 7zip or winzip).

3. create a decorator as below.

def require_remote_debug(func):
    def __require_remote_debug(*args, **kwargs):
        import sys
        #sys.path.append('D:\\Python27\\Lib\\site-packages\\pycharm-debug.egg')
        from pydev import pydevd
        reload(sys)
        pydevd.settrace('10.197.60.137', port=9999, stdoutToServer=True, stderrToServer=True) # 10.197.60.137 is the debug server ip
        return func(*args, **kwargs) 
return __require_remote_debug

or

def require_remote_debug(debug_server_ip='10.197.60.137', debug_server_port=5678, enabled=False):
    '''to use this decorator, we need to do as the following steps:
       1. copy eclipse/plugins/org.python.pydev_x.x.x/pysrc to python path(like ..../python2.7/lib/dist-packages/ in linux, 
          or ..../python2.7/lib/site-packages/)
       2. add an empty file named '__init__.py' to  directory(....dist-package/pysrc or ....site-packages/pysrc), 
          in order to make pysrc as a python package
       3. edit the file pydevd_file_utils.py in directory(....dist-package/pysrc or ....site-packages/pysrc), 
          try to mapping the app source code from remote server to debug server. 
          e.g. PATHS_FROM_ECLIPSE_TO_PYTHON = [
                   (normcase(r'D:\eclipse4.2\work_space\abc'),
                    normcase(r'/home/mijiang/workspace/abc'))]
    '''
    def _require_pydev_remote_debug(func):
        def __require_pydev_remote_debug(*args, **kwargs):
            if enabled:
                import sys
                from pysrc import pydevd
                reload(sys)
                pydevd.settrace(debug_server_ip, port=debug_server_port, stdoutToServer=True, stderrToServer=True)
            return func(*args, **kwargs)
        return __require_pydev_remote_debug
    return _require_pydev_remote_debug

 

4. add decorator for the test method.

@require_remote_debug
def test():
    pass

5. start the debug server(select Remote Debug from dropdownlist "Select Run/Debug Configurations") in pycharm.

6. trigger the method "test" call on the remote server.

posted on 2013-01-07 17:14  jmbkeyes  阅读(1154)  评论(0)    收藏  举报

导航