-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 .