IntelliJ IDEA 14.1.6 에서 Python remote Debug / 장고 원격 디버깅 / django remote debugging using IntelliJ IDEA
참고로 IntelliJ IDEA 15.0 에서는 제대로 동작하지 않았다.
원격 디버깅
여기서는 remote machine 의 server 를 local 에서 원격으로 debugging 을 해 보려 한다. ref. 1 의 내용이 정리가 잘되어 있어서 글의 구성은 ref. 1을 따른다.local(debug server) <-----> remote machine
local(debug server) 설정
IntelliJ IDEA 14.1.6 에서 Python remote Debug 설정
- Run
- > Edit Configuration
- > '+' 기호
- > Python Remote Debug
- > Local host name 적기(외부에서 접근할 주소)
- > Port 입력
- > OK
- > remote-debug 를 실행
아래 화면이 나오면 된다.
path mapping
django source 의 root 위치를 맞춰주자. 필자의 경우는 아래와 같이 설정해 줬다.
<local --> remote> D:/mine/programming/python/my/django_project_root --> /home/user1/django_project_root d:/envs/my_virtual/Lib --> /home/user1/my_virtual/lib/python2.7/
맞지 않으면 아래 같은 error 가 나올 것이다.
pydev debugger: warning: trying to add breakpoint to file that does not exist: /home/myuser/app/beluga/d:/envs/myproject/lib/site-packages/django/views/generic/base.py (will have no effect)
Remote machine 설정
break point 설정 : remote machine 에 있는 소스
configuration 에 있는 코드 2개(화면)를 remote server 에 있는 django 의 source 에 copy 해 놓으면, 그 지점에서 local debugger server 로 신호를 주고, interrupt 가 걸린다.(break point 를 설정한 곳에 도달했을 때 모습이 된다.)되도록 local 에 있는 소스와 remote 에 있는 source 의 line 이 달라지지 않게 하기 위해 아래처럼 한줄로 입력 하는 것이 좋다. remote machine 의 소스에서 break point 를 주고 싶은 곳에 아래 code 를 넣으면 된다.
import sys;sys.path.append('/home/myapps/app/debug/pycharm-debug.egg');import pydevd;pydevd.settrace('124.49.91.247', port=10101, stdoutToServer=True, stderrToServer=True)
참고로, 시점은 불분명하고, 위의 code 가 실행된다며, 그 후에는 local(debugger server) 에서 그냥 breakpoint 를 사용하면 된다.
manage.py
ref. 1 에서는 아래처럼 manage.py 끝에 넣었는데,- manage.py runserver
#!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "beluga.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) sys.path.append('/home/myapps/app/debug/pycharm-debug.egg') import pydevd pydevd.settrace('124.49.91.247', port=10101, stdoutToServer=True, stderrToServer=True)
pycharm-debug.egg 를 remote machine 에 설치
pycharm-debug.egg 다운받기
내가 찾지 못한 부분도 있는데, plugin 으로 설치한 python 에 대한 pycharm-debug.egg 가 없어서 처음에는 PyCharm 의 것을 가져다 썼는데, 아래 repository 에서 plugin 파일을 download 하니 pycharm-debug.egg 가 들어있었다.여기서 버전을 맞춰서 사용한다고 해도 아래와 같은 warning 은 계속 보였다.
Warning: wrong debugger version. Use pycharm-debugger.egg from PyCharm installation folder.
pycharm-debug.egg 를 설치하기
easy_install 을 사용해서 pycharm-debug.egg 를 설치하자. 만약 설치가 안되면 아래처럼 직접 경로를 넣어줘도 된다고 한다. [ref. 1] 필자도 설치하지 않고, settrace 를 호출할 때 마다 아래 코드를 같이 넣어줬다.(위의 break point 설정 확인)import sys sys.path.append('/home/john/app-dependancies/pycharm-debug.egg')
댓글 없음:
댓글 쓰기