2013-08-06 2 views
2

pdb, отладчик Python по умолчанию, имеет недокументированную команду (?) retval, которая печатает возвращаемое значение текущей функции, если вы уже вычислили ее и на один шаг от возврата к кадру вызывающего.Как проверить возвращаемые значения в отладчике Winpdb Python без изменения исходного кода?

Есть ли аналогичная функциональность в графическом Winpdb отладчике? Я не могу найти возвращаемое значение где угодно, и он не распознает retval как команду.


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

#original code 
def f(x): 
    return x+1 

#debugging code 
def f(x): 
    r = x+1 
    return r 

Наконец, я также открыт для альтернативных отладчиков, пока у них есть графический интерфейс, работать на Linux и не поставляются в комплекте внутри IDE.

+0

насчет просто дать команду консоли, для примера, 'Eval х + 1'? – ikdc

+0

@IstvanChung: Это отличный вариант, который должен делать трюк большую часть времени, но я бы не хотел этого делать, если возвращаемое выражение имеет побочные эффекты. – hugomg

ответ

1

Проводится ли подсчет ручейков? Отладчик PuDB работает в терминале, но имеет графический интерфейс curses. Смотрите скриншот

(не будет выключен синий, есть и другие темы, а).

У него есть функция, которую вы хотите, когда вы переходите через оператор return, останавливается и показывает возвращаемое значение. Смотрите скриншот ниже enter image description here

1

В консоли

  • использования bp filename.py:f установить точку останова на f
  • использования go и ждать точки останова, чтобы срабатывать.
  • шаг и использовать r или return
  • использовать v или eval, чтобы получить значение, например v x+1
+0

Что делать, если выражение Im return имеет побочный эффект? Есть ли способ избежать его запуска дважды? – hugomg