Можно ли использовать обратную отладку GDB с Python?Как? - PullRequest
4 голосов
/ 27 сентября 2010

Я пытаюсь использовать обратную отладку GDB с приложением Django. Я запускаю его в GDB, но не могу заставить его работать в обратном направлении.

Я остановил свое приложение Django с помощью Ctrl-Z и затем ввел reverse-next в приглашении gdb, получив сообщение об ошибке «Целевой многопоточный режим не поддерживает эту команду».

Я делаю это неправильно? Разве это не возможно? И то и другое?

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

Прежде чем вы сможете использовать GDB для обратной отладки, вы должны указать ему записывать выполнение вашей программы (чтобы он мог ее воспроизвести) с помощью команды target record, как описано здесь .

Я не уверен, что это поможет вам отладить ваше приложение Django, хотя - GDB хорошо подходит для отладки «нативного» кода (скомпилировано C/C++), а не хорошо подходит для отладки » код (в прямом или обратном направлении).

1 голос

RevDB

https://bitbucket.org/pypy/revdb

https://morepypy.blogspot.co.uk/2016/07/reverse-debugging-for-python.html

Этот проект направлен на обеспечение pdb -подобной обратной отладки, которая вероятначто вы хотите, если только вы не отлаживаете сам интерпретатор Python.

Он все еще находится на ранних стадиях с 2017 года, и вы должны строить из исходного кода.

Как задавать вопросы, в которых не упоминается GDB: Возможно ли сделать шаг назад в pdb?

Наконец, обратная отладка GDB довольно незрелая, например, не работает с расширениями AVX Отключить функции, оптимизированные для AVX в glibc (LD_HWCAP_MASK,/etc/ld.so.nohwcap) для valgrind & gdb record , поэтому я настоятельно рекомендую вместо этого использовать rr: https://github.com/mozilla/rr (на что RevDB претендует, что черпает вдохновение).

0 голосов
/ 27 сентября 2010

Это удивительно хороший вопрос.

Мой первый импульс - убедиться, что я использую IPython в качестве оболочки для django, и посмотреть, поможет ли в этом случае поддержка pdb.Pdb должен иметь интерфейс, очень похожий на gdb.Насколько я помню, gdb - это то, что используется для отладки программ на C / C ++, в то время как django выполняется интерпретатором python.Использование Pdb здесь:

http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/

Также вы можете попробовать использовать расширения django для доступа к представлению отладки werkzeug.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...