Как отладить скрипт python, запущенный сторонним приложением

#python #python-3.x #eclipse #debugging #pydev

#python #python-3.x #eclipse #отладка #pydev

Вопрос:

Я использую Linux Eclipse (pydev) в качестве IDE для разработки сценариев python, которые запускаются приложением, написанным на C . Я могу без проблем отладить скрипт python в IDE, но среда не является реальной (программа на C отправляет и получает сообщения через стандартный / стандартный вывод, и это сложный канал связи, который я не могу полностью воспроизвести, записывая сообщения вручную).

До сих пор я использовал сообщения журнала для отладки (отладка бедняков), но это становится слишком сложным. Когда я делаю что-то подобное на PHP, я могу просто оставить прослушивание xdebug и добавить точки останова в Netbeans. Очень аккуратно и просто. Возможно ли сделать что-то подобное в Python 3.X (с Eclipse или другой IDE)?

Я знаю, что есть функция Pydev / Attach для обработки, но она не работает. Всегда не удается подключиться.

ПРИМЕЧАНИЕ2: В Python 3.7 также есть встроенная функция «точка останова ()», но она ссылается на отладчик, и в случае сбоя IDE никогда не получает управление.

Комментарии:

1. Возможно, в eclipse есть плагин python, не уверен. У меня был очень хороший опыт использования jetbrains.com/pycharm для проектов на python

2. @ofirule У меня нет никаких проблем с изменением IDE, если он может делать то, что мне нужно: отлаживать скрипт, который запускается другим приложением, а не IDE

3. Вы можете рассмотреть возможность использования debugpy github.com/microsoft/debugpy

4. @yoonghm нужен ли мне VSCode для его использования? Основан ли он на DBG? Потому что, если это похоже на Eclipse или PyCharm на основе DBG, я предполагаю, что у него будет та же проблема с моим дистрибутивом Linux

Ответ №1:

После некоторых исследований это лучший вариант, который я нашел. Без какого-либо другого решения я публикую его на всякий случай, если у кого-то возникнет такая же проблема.

В Python есть встроенный отладчик: pdb. Он работает как модуль и не позволяет использовать его, если у вас нет элемента управления window (т. Е. Вы Запускаете скрипт).

Чтобы решить эту проблему, некоторые программисты создали модули, которые добавляют слой в pdb. Я попробовал некоторые, и самый простой и по-прежнему визуально интересный — это rpudb (но посмотрите и на это).

Чтобы установить его:

 pip3 install https://github.com/msbrogli/rpudb/archive/master.zip
  

(если вы установите его с помощью команды pip3 install rpudb, он установит старую версию, действительную только для python 2)

Затем вы используете его, просто добавляя импорт и вызов функции:

 import rpudb
.....
rpudb.set_trace('127.0.0.1', 4444)
.....
  

Запустите программу, и она остановится в вызове set_trace. Чтобы отладить его (и продолжить), откройте терминал и запустите telnet следующим образом:

 telnet 127.0.0.1 4444
  

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

Ответ №2:

Я смог подключить PyCharm к запущенному процессу python и использовать точки останова, используя PyCharm attach to process

Я создал скрипт bash, который выполняет скрипт python, должен работать так же с C

Комментарии:

1. После установки PyCharm возникает та же проблема. Похоже, это ошибка GDB.

2. Нет, просто не работает. IDE никогда не получает управление. В журналах ничего.