Как приостановить выполнение программы в Pycharm (кнопка паузы не работает)?

Во время отладки моей программы Python 3.5 в Pycharm 5.0.4 я пытаюсь нажать кнопку паузы, чтобы узнать, почему / где программа зависает (как это можно сделать в Visual Studio).

Однако ничего не происходит: кнопка паузы не становится серой, а кнопка возобновления остается серой, а в окне инструмента отладчика «Фреймы недоступны».

Я пробовал использовать разные базовые программы в Linux и Windows, но безрезультатно.

Это ошибка или мне что-то не хватает в том, как должна работать отладка Pycharm?

Я также заметил, что при достижении точки останова приостанавливается только один поток, и я не вижу способа приостановить другие потоки для проверки их кадров стека. Мне было бы интересно узнать, как добиться этой подвески, зависящей от потока.


person Erwin Mayer    schedule 26.02.2016    source источник


Ответы (2)


Похоже, ваша программа зависает в спящем режиме или что-то в этом роде, или, может быть, на каком-то собственном коде.

Если бы это был обычный цикл python, python с паузой работал бы. Я считаю, что проблема в самом Python, а не в используемом вами инструменте отладки.

Когда вы приостанавливаете программу python, вы приостанавливаете интерпретатор, и поэтому все потоки, которые выполняются в контексте интерпретатора, приостанавливаются, и вы можете видеть их в окне фреймов. Любой поток, который показывает сообщение «Фреймы недоступны в не приостановленном состоянии», не приостанавливается, потому что он находился в спящем режиме, когда вы приостановили программу.

см. здесь, как отлаживать код c Не работает точки останова python в потоке C в pycharm или eclipse + pydev

person PyGundy    schedule 11.08.2016

В PyCharm есть опция для отладки, которая позволит вам пошагово выполнить ваш код, что может быть более полезным, чем пытаться приостановить программу.

Сначала вам нужно вставить точку останова в код; просто щелкните серую полосу на строке, которую хотите прервать:

InsertBreakPoint

Затем вы можете нажать Alt + Shift + F9 или щелкнуть Run > Debug в меню, чтобы начать пошаговое выполнение кода с этой точки:

введите описание изображения здесь

DebugStepThrough

После того, как вы запустили режим отладки, нажмите кнопку, выделенную красным кружком - это позволит вам пройти через код, просматривая переменные, их назначения и если вы получите какие-либо ошибки.

Если вам нужно остановиться в любой момент, просто нажмите красную кнопку «Стоп» слева от окна отладки.
Вкладка консоли позволит вам увидеть, что выводится на экран (если есть) и в какой момент , избавьте вас от множества операторов печати, как если бы вы выполняли отладку с использованием Idle или аналогичных IDE

HTH

person James    schedule 26.02.2016
comment
Точки останова не очень полезны для произвольной приостановки выполнения и определения зависших строк, как в случае тупика. - person Erwin Mayer; 26.02.2016