-1.#IND#

Pandas использует Cython и C/C++ расширяемые модули для оптимизации производительности. К сожалению, стандартный отладчик Python не позволяет вам войти в эти расширения. Расширения Cython можно отлаживать с помощью Отладчик Cython и отладка расширений C/C++ может выполняться с помощью инструментов, поставляемых с компилятором вашей платформы.

Для разработчиков Python с ограниченным или отсутствующим опытом работы с C/C++ это может показаться сложной задачей. Основной разработчик Will Ayd написал серию из 3 частей в блоге, чтобы помочь вам перейти от стандартного отладчика Python к этим другим инструментам:

Отладка локально#

По умолчанию сборка pandas из исходного кода создаст релизную сборку. Для создания разработческой сборки можно ввести:

pip install -ve . --no-build-isolation --config-settings=builddir="debug" --config-settings=setup-args="-Dbuildtype=debug"

Примечание

среды conda обновляют CFLAGS/CPPFLAGS флагами, ориентированными на генерацию релизов. При использовании conda может потребоваться установить CFLAGS="$CFLAGS -O0" и CPPFLAGS="$CPPFLAGS -O0" чтобы гарантировать отключение оптимизаций для отладки

Указав builddir="debug" все цели будут собраны и размещены в отладочной директории относительно корня проекта. Это помогает разделить отладочные и релизные артефакты; вы, конечно, можете выбрать другое имя директории или опустить его, если не хотите разделять типы сборок.

Использование Docker#

Для упрощения процесса отладки pandas создал Docker-образ со сборкой Python для отладки и предустановленными отладчиками gdb/Cython. Вы можете docker pull pandas/pandas-debug чтобы получить доступ к этому изображению или собрать его из tooling/debug папку локально.

Затем вы можете подключить свой репозиторий pandas к этому образу через:

docker run --rm -it -w /data -v ${PWD}:/data pandas/pandas-debug

Внутри образа вы можете использовать meson для сборки/установки pandas и размещения артефактов сборки в debug папку с помощью команды, как показано ниже:

python -m pip install -ve . --no-build-isolation --config-settings=builddir="debug" --config-settings=setup-args="-Dbuildtype=debug"

Если планируется использовать cygdb, файлы, необходимые для этого приложения, размещаются в папке сборки. Поэтому сначала необходимо cd в папку сборки, затем запустить это приложение.

cd debug
cygdb

В отладчике вы можете использовать команды cygdb для навигации по расширениям cython.

Поддержка редактора#

Система сборки meson генерирует база данных компиляции автоматически и помещает его в каталог сборки. Многие языковые серверы и IDE могут использовать эту информацию для предоставления автодополнения кода, перехода к определению и проверки ошибок по мере ввода.

Способ, которым каждый языковой сервер / IDE выбирает поиск базы данных компиляции, может различаться. В случае сомнений вы можете создать символическую ссылку в корне проекта, указывающую на базу данных компиляции в вашей директории сборки. Предполагая, что вы использовали отладка в качестве имени вашей директории вы можете запустить:

ln -s debug/compile_commands.json .