원격 디버거를 Python 프로세스에 어떻게 연결합니까?
넣기 귀찮아
import pdb; pdb.set_trace()
내 Python 프로그램에 줄을 추가하고 콘솔을 통해 디버깅합니다. 원격 디버거를 연결하고 문명화된 사용자 인터페이스에서 중단점을 삽입하려면 어떻게 해야 합니까?
Winpdb를 사용 하십시오 . 네트워크를 통한 원격 디버깅, 다중 스레드, 네임스페이스 수정, 임베디드 디버깅, 암호화된 통신을 지원 하는 플랫폼 독립적인 그래픽 GPL Python 디버거이며 pdb보다 최대 20배 빠릅니다.
특징:
- GPL 라이선스. Winpdb는 자유 소프트웨어입니다.
- CPython 2.3 ~ 2.6 및 Python 3000과 호환
- wxPython 2.6 ~ 2.8과 호환
- 플랫폼 독립적이며 Ubuntu Gutsy 및 Windows XP에서 테스트되었습니다.
- 사용자 인터페이스: rpdb2는 콘솔 기반이지만 winpdb에는 wxPython 2.6 이상이 필요합니다.
(출처: winpdb.org )
글쎄, 다음과 같이 작동하는 꼬인 맨홀을 사용하는 것과 매우 유사한 것을 얻을 수 있습니다.
from twisted.internet import reactor
from twisted.cred import portal, checkers
from twisted.conch import manhole, manhole_ssh
def getManholeFactory(namespace):
realm = manhole_ssh.TerminalRealm()
def getManhole(_):
return manhole.Manhole(namespace)
realm.chainedProtocolFactory.protocolFactory = getManhole
p = portal.Portal(realm)
p.registerChecker(
checkers.InMemoryUsernamePassword DatabaseDontUse(admin='foobar'))
f = manhole_ssh.ConchFactory(p)
return f
reactor.listenTCP(2222, getManholeFactory(globals()))
reactor.run()
그런 다음 ssh를 통해 프로그램에 로그인하기만 하면 됩니다.
$ ssh admin@localhost -p 2222
admin@localhost's password:
foobar 를 비밀번호로 사용 합니다.
로그인하면 데이터를 찔러볼 수 있는 일반적인 파이썬 프롬프트가 표시됩니다. 호스트로 트레이스백을 보내는 것과는 다릅니다.
이제 GUI 프로그램에 통합하기가 까다로울 수 있습니다. 이 경우 다른 리액터를 선택해야 할 수 있습니다(예: gtk 기반 프로그램에서 gtk2reactor 등을 사용하는 경우).
실제 역추적을 보내려면 로컬 호스트로 인쇄하는 대신 네트워크를 통해 이동하는 stderr, stdin 및 stdout 모두에 대한 소켓 채널을 만들어야 합니다. 트위스트를 사용하여 달성하기에는 너무 어렵지 않아야 합니다.
조금 늦었지만 여기에 http://michaeldehaan.net/post/35403909347/tips-on-using-debuggers-with-ansible 의 매우 가벼운 원격 디버깅 솔루션이 있습니다 .
pip install epdb
원격 호스트에서.epdb
기본적으로INADDR_ANY
127.0.0.1이 아닌 모든 주소( )에서 수신 대기 하도록 설정되어 있으므로 방화벽 설정이 원격 호스트의 포트 8080에 대한 비로컬 연결을 허용하지 않는지 확인하십시오 .import pdb; pdb.set_trace()
프로그램에서 사용 하는 대신import epdb; epdb.serve()
.epdb.connect()
텔넷을 사용하므로 원격 호스트에 안전하게 로그인 합니다.- 를 사용하여 프로그램에 첨부합니다
python -c 'import epdb; epdb.connect()'
.
물론 로컬 네트워크 설정 및 보안 입장에 맞게 보안 비트를 조정하십시오.
최신 IDE의 두 가지 솔루션:
PTVS 플랫폼 간 원격 디버깅
PyCharm/PyDev 원격 디버깅
ReferenceURL : https://stackoverflow.com/questions/543196/how-do-i-attach-a-remote-debugger-to-a-python-process
'IT이야기' 카테고리의 다른 글
node.js에서 예기치 않은 예약어 가져오기 (0) | 2021.09.13 |
---|---|
VSTS를 사용하는 ASP.NET Core Web API의 CI/CD (0) | 2021.09.13 |
가져온 모듈의 파일 경로 가져오기 (0) | 2021.09.13 |
다른 스크립트를 계속 실행할 수 있도록 "루트" 서블릿을 어떻게 매핑할 수 있습니까? (0) | 2021.09.12 |
C++용 Javadoc과 유사한 문서 (0) | 2021.09.12 |