Пишу вспомогательные экспорты в pyd-ы нашего тест-фреймворка (написанного на С++), при помощи boost::python.
Фреймворк предназначен для написание тестов которые тестируют некоторое железо.
Раньше все тесты писались в виде dll откуда дёргались функции из фреймворка.
Сейчас я прикрутил к нему возможность запуска python-овских тестов.
Проблема в том что фремворк довольно тяжёлый в том плане что что бы он начал работать т.е. что бы из него можно было начать выполнять какие то вызовы, должен пройти некоторый этап инициализации.
Сейчас запуск python-овских скриптов выглядит так:
— поднимается фреймворк (в консольном приложении) и для этого из специального GUI-шного приложения чрез сеть ему передаются некоторые настройки.
— фреймворк загружает специальную dll-обёртку которая запускает python-овский движок попутно настраивая пути для поиска pyd (в sys.path)
и передает ему скрипт на выполнение.
— скрипт делает загрузку моих pyd-ов через экспорт-ы которых вызывает функции из фреймворка.
Проблема в том что таким образом нельзя выполнить отладку самого скрипта, как это например можно сделать в каком то python-овском дебагере (например PyCharm), просто установив брекпоинт в тексте скрипта.
Мне интересно как устроены эти дебагеры. Т.е. используют ли они уже готовый python-овский движок или реализуют свой собсвенный.
Т.к. решений этой проблемы у меня пока 3:
1) Если python-овские дебагеры используют установленный в систему python-овский движок
, то можно ли таким дебагером как то подключиться к моему запущенному движку который крутиться в моем фреймворке.
Если так, посоветуйте куда вообще смотреть, и какие дебагеры щупать. Было бы просто классно если бы прямо из фреймворка управление
выполнения скрипта можно было прямо передать такому дебагеру.
2) Если эти дебагеры реализуют собственный движок, то опять (существуют ли такие) можно ли как то используя их API опять таки "подсадить" мой фреймворк на их python-овский движок.
3) Ну и самый тупой вариант это использовать python-овский дебагер и написать специальные pyd-ы которые будут содержать функции для поднятия
фреймворка прямо из скрипта питона. Но это неудобно тем то что придется тогда разделять отличать debug версию скрипта (с этими специальными pyd-ами) и release (без них). Да и к тому же как я уже написал фреймворк инициализируется не тривиально.
Во общем если сократить вопрос то получается так:
Куда копать (что смотреть, возможно даже в самом api из python) что бы предоставить возможность отладки python-овских скриптов заточенных под специальный фреймворк, которые сами по себе запускаться не могут из за требований которые на них накладывает этот фреймворк и наличия специальных pyd-ов (по сути обёртки на api фреймворка).
N>Куда копать (что смотреть, возможно даже в самом api из python) что бы предоставить возможность отладки python-овских скриптов заточенных под специальный фреймворк, которые сами по себе запускаться не могут из за требований которые на них накладывает этот фреймворк и наличия специальных pyd-ов (по сути обёртки на api фреймворка).
А
pdb уже по каким-то причинам отброшен? Благо консоль, как я понял, уже есть, все должно "взлететь" само. В py-скрипте пишем:
import pdb;
pdb.set_trace()
И можно трассировать, просматривать значения переменных и т.п.
Здравствуйте, EreTIk, Вы писали:
N>>Куда копать (что смотреть, возможно даже в самом api из python) что бы предоставить возможность отладки python-овских скриптов заточенных под специальный фреймворк, которые сами по себе запускаться не могут из за требований которые на них накладывает этот фреймворк и наличия специальных pyd-ов (по сути обёртки на api фреймворка).
ETI>А pdb уже по каким-то причинам отброшен? Благо консоль, как я понял, уже есть, все должно "взлететь" само. В py-скрипте пишем:
ETI>ETI>import pdb;
ETI>pdb.set_trace()
ETI>
Спасибо. Я просто в предыдущем посте забыл добавить что в python-е я полный нуб.
Вот ещё сегодня смотрел в настройках PyCharm там есть упоминание о каких то возможностях remote debug, но опять таки с ходу понятно мало чего.
Придется видимо завтра почитать help, надеюсь там будет описание.
ETI>И можно трассировать, просматривать значения переменных и т.п.
Гм... Т.е. это какой то встроенный отладчик прямо в python-е интересно насколько он удобный будет.
Но в любом случае спасибо. Если есть ещё что сказать не стесняйтесь я потом буду сидеть и разбирать по полочкам всё.
N>Гм... Т.е. это какой то встроенный отладчик прямо в python-е интересно насколько он удобный будет.
Я бы все же сказал, что язык и интерпретатор позволяют написать полноценный отладчик (трассировка, точки останова, в том числе и условные, вычисление и печать выражений с переменными отлаживаемого кода) на том же питоне. Что и демонстрирует
pdb: это py-скрипт (~\Lib\pdb.py), который можно полистать на досуге
Основной аргумент "за": все есть после инсталляции питона, не нужно ничего дополнительно устанавливать/настраивать.
Единственное, что может отпугнуть –
олд-скульный консольный текстовый интерфейс. Если были навыки работы в других консольных отладчиках, то проблем не будет.