2012-07-15 6 views
18

저는 Gevent와 함께 놀았습니다. 나는 그것을 아주 좋아합니다. 그러나 나는 문제가 생겼다. 중단 점에 충돌이 발생하지 않으며 디버깅이 작동하지 않습니다 (Visual Studio Python 도구와 Eclipse PyDev 사용). 이것은 monkey.patch_all()이 호출 된 후에 발생합니다.gevent monkey-patching and breakpoints

이것은 나에게 큰 문제이며, 불행히도 이것은 gevent 사용에 대한 차단제입니다. few threads은 gevent가 디버깅을 중단한다는 것을 나타내는 것으로 보이지만 해결책이 있다고 상상해보십시오.

누구나 디버깅 및 중단 점을 gevent 및 monkey 패칭과 함께 작동시키는 방법을 알고 있습니까?

+0

글쎄, 왜 우리는 80 번째와 같이 "인쇄"를 사용하지 않습니까? 이것이 정확하게 당신이 찾고있는 것은 아니지만 버그 또는 2 개를 고치는 데 도움이 될 수 있습니다. – Moonwalker

답변

3

pdb - The Python Debugger

import pdb 
pdb.set_trace() # Place this where you want to drop into the python interpreter. 
+0

매력처럼 작동합니다. – kkurian

8

PyCharm IDE 문제를 해결한다. 구성 플래그를 설정 한 후 geent 코드 디버깅을 지원합니다 : http://blog.jetbrains.com/pycharm/2012/08/gevent-debug-support/.

현재 불행히도 gevent를 디버깅 할 수있는 무료 도구를 모릅니다.

UPD : 여기 있습니다! 이제 PyCharm의 커뮤니티 버전이 있습니다.

+1

심지어 1 년 정도 후에이 스레드가 여전히 유용하기 때문에 ... Jetbrains는 이제 Pycharm의 무료 "커뮤니티"버전을 제공합니다 - http://www.jetbrains.com/pycharm/download/index.html –

0

현재 Pycharm 2.7.3을 사용하고 있으며 디버깅을 방해하는 gevent 0.13.8에 문제가있었습니다. 그러나 gevent 1.0rc3으로 업데이트하면 다시 제대로 디버깅 할 수 있음을 알았습니다.


(!) 참고 : 나는 이제 막 JetBrains의가 구성 플래그 해결 방법을 가지고 있음을 알게

. 다음 해킹으로 디버깅해야 할 때 문제가 발생했습니다. 나는 그것이 왜 효과가 있었는지도 부정적인 결과가 무엇 인지도 몰랐다. 방금 약간의 시행 착오를했고 grequests를 사용할 때 디버깅이 작동하도록했습니다.

# overrides the monkeypatch issue which causes debugging in PyDev to not work. 
def patch_time(): 
    return 
import gevent.monkey 
gevent.monkey.patch_time = patch_time 
import grequests