2016-07-19 6 views
2

PythonコードでPyCharm + Pydevdを使ってリモートデバッグしようとしています。コード内にeventlet.monkey_patch()があるとリモートデバッグできませんか?

私は、リモートデバッグしようコードは以下の通りです:

#!/usr/bin/python 
import eventlet 
eventlet.monkey_patch() 

def main(): 
    import pydevd 
    pydevd.settrace('10.84.101.215', port=11111, stdoutToServer=True, stderrToServer=True) 
    print "Done" 

if __name__ == '__main__': 
    main() 

私は

eventlet.monkey_patch() 

行をコメント場合、リモートデバッグが動作することに注意してください。私が回線を変更した場合

eventlet.monkey_patch(os=False, thread=False) 

リモートデバッグも機能します。私が持っている

しかし、私は、これはいくつかの他のロジックが壊れますので。(私は、リモートデバッグOpenStackの中性子にしようとしています。上記のコードは私の質問を説明するだけのサンプルです)、それを行うことはできません

も私の問題を解決していないが、私はこの問題の後に何かをして、ここにそれらを貼り付けます。

1. In PyCharm do below setting 

setting -> Build,Extension,Deployment -> Python Debug -> Gevent Compatible (Check) 

2. In PyCharm do below change 

Edit the file 
C:\Program Files (x86)\JetBrains\PyCharm 2016.1.4\helpers\pydev_pydevd_bundle\pydevd_constants.py 

Replace SUPPORT_GEVENT=False to SUPPORT_GEVENT=True 

これはPyCharmの問題またはPydevdの問題です。私はすでにPyCharmコミュニティにこれを投稿していますが、まだ回答が得られていません。だから私はここで試すことができると思います。あなたがそれについて知っているなら、いくつかアドバイスをしてください。

答えて

0

Pydevdには助けられませんが、イベントレットにはインタラクティブなインタプリタのバックドアがあり、コードを接続して実行してシステムの状態を分析することができます。

eventlet.monkey_patch() 
# add one line 
eventlet.spawn(backdoor.backdoor_server, eventlet.listen(('localhost', 3000))) 

お気に入りのTelnetクライアントに接続します。

http://eventlet.net/doc/modules/backdoor.html

また、import ipdb ; ipdb.set_trace()はいつも私のための驚異を働いています。

+0

eventlet.monkey_patch()を使用すると、ipdbコンソールで入力できなくなってしまいましたが、どうしたのですか? – steve

関連する問題