2016-06-23 4 views
0

PyCharm의 원격 디버거를 통해 Maya 용 Python 코드를 디버깅하고 있습니다. 코드가 명령 행에서 실행될 경우 원격 디버거가 예상대로 중단 점을 잡을 수 있지만, Python 코드가 Maya의 스크립트 편집기에서 실행중인 경우 원격 디버거는 중단 점을 잡을 수 있습니다.Python 코드가 Maya의 스크립트 편집기에서 실행중인 경우 PyCharm은 중단 점을 catch 할 수 없습니다.

PyChrome 원격 디버거가 Windows에서 실행되는 동안 Python 코드는 우분투 컴퓨터에서 실행됩니다.

스크립트가 들어있는 디렉토리에서 Ubuntu 머신의 Maya를 실행합니다. PyCharm의 경로 매핑은 단순히 "."로 설정됩니다. 동일한 파이썬 스크립트가 포함 된 Windows 경로입니다. 이 문제로 나를 도울 수 있습니까? 고마워.

답변

0

OK, 직접 답변을 찾았습니다. 문제가 경로 매핑 설정과 관련되어 있다고 생각했지만 지금은 파이썬 코드가 호출되는 방식과 관련되어 있습니다.

pydevd은 Windows에서 실행되는 PyCharm의 원격 디버깅 서비스와 통신하기 때문에 전체 Python 스크립트가 무엇인지 알아야이 정보를 PyCharm에 전송하여 소스 및 해당 중단 점을 찾을 수 있습니다. Maya가 Python 스크립트를 Script Editor의 전체 내용이 완전한 파이썬 모듈임을 pydevd가 알 수있을만큼 똑똑하지 않기 때문에 "Script Load"버튼을 클릭하여 Python 스크립트를 Maya Script Editor에서 직접 실행하는 것은 불가능합니다. 파일 - 그것은 본질적으로 라인 단위의 파이썬 인터프리터이며, 편집 편의성을 제공하는 멀티 라인 에디터의 형태로만 존재합니다.

그래서 핵심은 pydevd가 전체 파이썬 모듈 스크립트가 무엇인지 알려주는 것입니다. 이는 import을 통해 코드를 실행하여 수행됩니다. 가져온 것이 전체 모듈 파이썬 코드 여야한다는 것은 놀라운 일이 아닙니다. 그 결과,

import pydevd 
pydevd.settrace('the.remote.debugger.IP', port=7720, stdoutToServer=True, stderrToServer=True) 

를 사용하여 마야에 pydevd 실행 한 후, 우리는 파란색을 클릭 한 후, 편집기

import theBuggyModule 

이 방법은 스크립트를 입력하여 우리가 디버깅하려는 파이썬 코드를 호출해야한다 "실행" 아이콘을 클릭하면 실행 흐름이 이제 PyCharm의 원격 디버거로 전송되므로 스크립트 편집기가 응답을 중지합니다. 때때로 PyCharm은 소스를 인식하고 따라서 중단 점을 잡는 데 약간의 어려움이 있습니다. 이 경우, PyCharm의 새로 생성 된 탭에서 "자동 감지"링크를 클릭하면 소스 파일이 목록에 있어야합니다. 이 작업은 한 번만 수행됩니다. 이 질문은 내 질문에 설명 된대로 경로 맵이 설정된 경우에만 작동합니다. 그렇지 않다면 PyCharm이 원격 디버거 서비스가 실행중인 원격 컴퓨터에서 소스를 찾을 수 있도록 매핑을 적절히 설정해야합니다.

내 답변이 완벽하지 않으므로 어떤 (올바른) 보완적인 자료라도 환영합니다. "그건 불가능합니다", "로컬에서만 디버깅 할 수 있습니다", "그런 식으로 작동하지 않습니다"또는 그런 식으로 말하지 마십시오. 감사.

0

중단 점은 ide가 catch하는 것입니다. Maya의 스크립트 편집기는 단지 멋진 텍스트 상자 일뿐입니다.

+0

예, 물론 PyCharm의 IDE에서 중단 점을 잡아 내고 Python 코드를 Maya Script Editor에서 실행했습니다. – user5280911

+0

내 말은 ide 만이 ide를 통해서만 실행되는 중단 점을 해석 할 수 있다는 것입니다. – cronicryo

+0

당신이 무슨 말을하고 있는지 전혀 모르겠습니다. "원격 디버거"가 무엇인지 모르는 것 같습니다. – user5280911