2014-12-18 7 views
9

enter image description hereDlaczego python debugger zawsze otrzymuje ten czas oczekiwania na odpowiedź na 113 podczas korzystania z Pycharm?

Bigger image

Szczególnie może uruchomić kod działa trochę długo (10 minut w przybliżeniu), a następnie nacisnąć punkt załamania. Debuger Pythona zawsze pokazuje mi ten rodzaj błędu "Limit czasu oczekiwania na odpowiedź na 113" Okrążam je na czerwono w screencut.

Używam Pycharm jako mojego Pythona IDE, czy to tylko kwestia Pycharm IDE? Lub problem z debugowaniem w Pythonie? A jeśli Pycharm nie jest zalecany, każdy może dać mi lepsze IDE, które będzie w stanie efektywnie debugować.

+0

Bardzo trudno zobaczyć na podstawie tego zrzutu ekranu. Czy możesz podać traceback i przykład kodu? –

+0

W rzeczywistości, jeśli przeciągniesz obraz do nowego okna, stanie się on większy. Kod nie jest tutaj ważny, po prostu zastanawiam się, dlaczego debugger w IDE nie działa. – Hypnoz

Odpowiedz

7

Miałem coś podobnego, co mi się przydarzyło kilka miesięcy temu, okazało się, że miałem naprawdę powolną operację w ramach __repr__() dla zmiennej, którą miałem na stosie. Kiedy PyCharm uderza w punkt przerwania, pobiera wszystkie zmienne z bieżącego zakresu i wywołuje na nich __repr__. Oto rozrywki, który demonstruje ten problem:

import time 

class Foo(object): 

    def __repr__(self): 
     time.sleep(100) 
     return "look at me" 

if __name__ == '__main__': 
    a = Foo() 
    print "set your breakpoint here" 

pycharm będzie również zadzwonić __getattribute__('__class__'). Jeśli masz niewłaściwe zachowanie, które może Cię również poderwać.

To może nie być to, co się z tobą dzieje, ale być może warte rozważenia.

0

Jak jesteś na Windows, do debugowania takich & większość rzeczy używam starego dobrego PythonWin IDE: Ten IDE + debugger działa w tym samym procesie co debugowanego rzeczy!

W ten sposób pozostawanie w bezpośrednim kontakcie z rzeczywistymi obiektami, takimi jak pdb w prostej powłoce interaktywnej, ale posiadające użyteczny interfejs GUI, jest dużą zaletą przez większość czasu. W ten sposób nie ma problemów z przenoszeniem rozległych obiektów przez repr/pikle między procesami, bez opóźnień, bez problemów z przekroczeniem limitu czasu, itp.

Jeśli krok zajmie dużo czasu, PythonWin będzie po prostu czekać i nie odpowiedzieć wcześniej ... (chyba że ktoś wyemituje sygnał przerwania/KeyboardInterrupt za pośrednictwem ikony w zasobniku systemowym PythonWin).

Interaktywna powłoka PythonWin jest również w pełni użyteczna podczas debugowania - z przestrzenią nazw wewnątrz aktualnej ramki.

Powiązane problemy