Отладка Python в Eclipse + PyDev - PullRequest
7 голосов
/ 24 апреля 2010

Я пробую пару Eclipse + PyDev для некоторых моих работ. (Eclipse v3.5.0 + PyDev v1.5.6) Я не смог найти способ выставить все свои переменные на консоль PyDev (Через консоль PyDev -> Консоль для текущего активного редактора) Я использую простой код для описания проблемы , Когда я пошагово перебираю код, я не могу получить доступ к моей переменной «x» из консоли. Он просматривается на вкладке Переменные, но это не совсем то, что я хочу.

Любая помощь приветствуется.

Смотрите мой скриншот для лучшего описания:

альтернативный текст http://img541.imageshack.us/img541/4514/eclipsedebug.png

EDIT:

Предположим, что вы добавили простой функционал вроде:

def myfunc(x):
    return x**x

Когда я отлаживаю функцию, добавленную в код, я могу легко получить доступ к myfunc из консоли. (Введите myfunc, и он будет доступен после этого автоматического выполнения:

>>> from part2.test import myfunc
>>> myfunc

Затем, когда я выполняю myfunc (5), он действует так же, как в интерпретаторе Python. Было бы так полезно получить доступ к переменным аналогичным образом для отладки моего кода. У меня есть большие массивы, и я делаю различные тесты и операции во время процесса отладки. Подобно: Получите мой x и выполните x.sum (), позже выполните x [:: 10] или транспонируйте, работайте с другими массивами, наблюдайте за результатами, экспериментируйте и т. Д. *

Надеюсь, будет лучшее решение.

Ответы [ 2 ]

8 голосов
/ 29 апреля 2010

Обновление:

В последних версиях PyDev можно щелкнуть правой кнопкой мыши фрейм в стеке и выбрать PyDev> Отладочная консоль, чтобы получить интерактивную консоль с большим количеством функций, связанных с контекстом во время сеанса отладки.


К сожалению, реальная интерактивная консоль, которая была бы предпочтительным способом воспроизведения кода (с дополнением кода и т. Д. - http://pydev.org/manual_adv_interactive_console.html), сейчас не имеет связи с сеансом отладки (это запланировано, но все еще планируется). не реализовано).

Тем не менее, с доступной «более простой» консолью вы по-прежнему можете в интерактивном режиме проверять и играть с переменными, доступными в области точки останова: http://pydev.org/manual_adv_debug_console.html (то же самое, что вы имели бы с pdb - - это просто вопрос ввода кода в доступной консоли после нажатия на точку останова).

Приветствия

Fabio

2 голосов
/ 28 апреля 2010

Для такого рода поисковой отладки мне нравится использовать pdb, отладчик с батарейками. Я не использовал его внутри PyDev, поэтому я не знаю, как все это будет сочетаться. Я думаю, что это будет делать то, что вы ожидаете. Пример его использования:

import pdb

def myfunc(x):
    pdb.set_trace()
    return x**x

Это прервется прямо перед выполнением оператора return и позволит вам использовать полные выражения Pythonic, чтобы выяснить, что происходит. Я использую его как интерактивный оператор печати: задаю место, где я хочу погрузиться, исследую ценности и вычисляю результаты, и шагаю, чтобы увидеть, как это происходит. Возможно, это ленивый способ отладки, но иногда вам нужно больше информации, прежде чем вы сможете принимать менее ленивые решения: -)

Страница, на которую я обычно ссылаюсь, находится на Python Conquers The Universe , которая также связывает несколько других источников информации.

...