Отладка C-библиотеки из Python (ctypes)
У меня есть Python-программа, которая использует ctypes и C-shared-библиотеку (dll файл). В качестве IDE я использую Eclipse, где будут разрабатываться оба проекта (библиотека C-shared и программа python, которая ее использует).
Моя идея: когда я запускаю Python-программу в режиме Debug, могу ли я как-то отладить совместно используемую библиотеку, написанную на C? Значение: Могу ли я установить точки останова и когда Python-программа достигает этой точки останова в общей библиотеке, выполняя остановки, и я могу изменять значения переменных и т.д.?
Спасибо за помощь.
Ответы
Ответ 1
На самом деле, это довольно простая задача, использующая среды CDT и PyDev в Eclipse.
Я предполагаю, что вы уже правильно настроили проекты, поэтому вы можете самостоятельно создавать и отлаживать их.
В принципе, вам просто нужно запустить проект Python в режиме отладки, а затем присоединить отладчик CDT к запущенному процессу python. Чтобы было проще, я попытаюсь описать это шаг за шагом:
-
Запустите проект Python в режиме отладки. Поместите точку останова где-нибудь после загрузки dll с помощью ctypes. Обратите внимание на pid процесса python, созданного (вы должны увидеть первую строку в консольном представлении с указанием pid. Пример: pydev debugger: starting (pid: 1234)
)
-
Создайте конфигурацию отладки для вашего проекта CDT, выбрав тип "C/С++ Attach to Application". Вы можете использовать конфигурацию по умолчанию.
-
Отлаживайте проект, используя созданную вами конфигурацию. Должно появиться окно с вопросом, к какому процессу вы хотите подключиться. Выберите процесс python с правом pid.
-
Теперь вы можете добавить контрольные точки для кода C.
В отладочной перспективе у вас будет два отладчика, как если бы они были двумя разными процессами. Вы всегда должны убедиться, что сеанс отладки C/С++ запущен, когда вы работаете с отладчиком python - пока приостановлена сессия отладки C/С++, отладчик python будет неактуальен.
Ответ 2
Насколько я знаю, не в затмении.
Однако инструменты Python для визуальной студии имеют такую возможность:
https://pytools.codeplex.com/wikipage?title=Mixed-mode%20debugging
Также можно получить это бесплатно. На веб-сайте Microsoft вам понадобится (а также копия Windows)
1) Visual Studio (платная версия Pro + или бесплатные версии Express (начиная с 2.1Beta))
2) Расширение PTVS (это дает поддержку VS Python)
3) Python-интерпретатор и библиотеки Python (они не связаны с PTVS)
Это означает, что вы можете отлаживать python и c бок о бок. Вызовы в библиотеки, написанные на c, захватываются отладчиком при условии, что они были скомпилированы с помощью символов визуальной студией.
Обратите внимание, что возможности отладки смешанного режима, как правило, менее характерны для родного питона, но он все еще способен использовать обычный собственный отладчик.