Отладка 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, захватываются отладчиком при условии, что они были скомпилированы с помощью символов визуальной студией.

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