Более удобный для анализа вывод locals() отладчика Python [закрыто]Python

Программы на Python
Ответить
Anonymous
 Более удобный для анализа вывод locals() отладчика Python [закрыто]

Сообщение Anonymous »

Мне нужно, чтобы текстовый вывод locals() было легче анализировать, чем вывод по умолчанию. Я использую IDE, которую я написал на C, которая запускает tty() для запуска pdb, захватывает выходные данные locals() и анализирует их в полезные данные для моей IDE.
Я написал несколько функций Python, которые могут выводить формат, который я ищу, но я не могу заставить отладчик использовать эти функции, не включая их непосредственно в исходный код, который я пытаюсь отладить. Я сделал пакет() из них и отправка импортного pdbext в pdb вводит его в код, который я отлаживаю в текущей функции, как еще одну локальную функцию, вместо того, чтобы pdb загружал его снаружи в сам отладчик. Я хочу избежать необходимости включать пакет отладки в каждый исходный файл.
Я также пытался расширить класс pdb.Pdb и включить эти функции в качестве членов в этот класс и использовать метод класса do_parse_locals(). Однако pdb больше не работал. Ввод простого следующего вернет его обратно в командную строку.
Что я могу сделать, чтобы добиться этого?
После рассмотрения примера Лави Кумара кажется, что импорт пакета pdbext.debug в ~/.pdbrc выходит за рамки при вызове другого исходного файла.
~/.pdbrc:

Код: Выделить всё

!import pdbext.debug

alias pl !pdbext.debug.debug_print (locals ())
в /usr/local/lib/python3.4/site-packages/pdbext/debug.py:

Код: Выделить всё

def debug_print (d):
print ("debug_print() d = ",d, flush = True)
return
test.py:

Код: Выделить всё

import test2

def test1 ():
i = 0
print ("test1 ()", flush = True)
test2.test3 ()
return

test1 ()
test2.py:

Код: Выделить всё

def test3 ():
a = 4
print ("test3 ()", flush = True)
return
Сеанс PDB:

Код: Выделить всё

python3 -m pdb test.py

(Pdb) b 6

(Pdb) continue

(Pdb) pl
shows: debug_print() d =  {'i': 0}

(Pdb) step

(Pdb) step   (this puts pdb in test2.test3())

(Pdb) pl
shows: *** NameError: name 'pdbext' is not defined
Может кто-нибудь объяснить, как всегда сохранять импорт pdbext.debug в области видимости?

Подробнее здесь: https://stackoverflow.com/questions/798 ... als-output
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»