如何调试PySide6应用程序的C++扩展?¶
在调试PySide代码时,通常您也会希望调试PySide模块的相应C++扩展。这是通过将调试器附加到Python解释器来完成的。在本教程中,我们将带您全面了解如何构建Qt 6,使用构建好的Qt 6来构建PySide6,然后在Qt Creator或VSCode中启动调试过程。
使用VSCode,您应该能够同时看到C++和Python的组合调用堆栈。不幸的是,使用Qt Creator,您只能调试PySide模块的原生C++代码;也就是说,您将无法在Python代码中设置断点。
注意
本教程是在Ubuntu 20.04 LTS上创建的,调试器为GDB。 因此,本教程主要面向Linux用户。不过,每个子章节中都提到了在其他平台上设置所有内容的链接。
让我们开始吧。
根据您的平台安装所有库依赖项¶
sudo apt install libfontconfig1-dev libfreetype6-dev \
libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev \
libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev \
libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev \
libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev \
libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev \
libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev \
libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev \
libopengl0 -y
如果您必须使用Qt Multimedia模块,您还需要安装gstreamer。
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc \
gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl \
gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
通常,任何关于缺失包的信息都可以通过检查您CMake构建文件夹中的config.summary来找到。
注意
对于其他平台,请使用此处提到的说明安装相同的软件包 Qt Install on Linux
构建Qt¶
这是一个可选步骤,适用于您只想调试CPython绑定或已经拥有Qt 6的DEBUG_SYMBOLS的情况。
有多种方法可以构建Qt - 使用配置脚本或手动使用CMake。 查找构建系统信息 Qt 6 Build System。
获取源代码。
git clone git://code.qt.io/qt/qt5.git # 获取子模块 cd qt5 perl init-repository
一旦你有了源代码,下一步就是使用CMake生成构建,然后构建并安装它。
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INSTALL_PREFIX=/path/to/install/Qt -DBUILD_qtwebengine=OFF .. cmake --build . --parallel cmake --install .
正如你在这里注意到的,我们跳过了Qt WebEngine模块,因为这大大减少了构建时间。然而,PySide6支持Qt WebEngine功能。所以如果你需要它,可以随意添加它。
有关构建 Qt 6 的更多说明可以在以下链接中找到:
将bin和lib路径添加到环境变量中¶
export PATH="/path/to/custom/qt/bin:$PATH"
export LD_LIBRARY_PATH="/path/to/custom/qt/lib:$LD_LIBRARY_PATH"
使用之前构建的Qt 6构建PySide6¶
按照从源代码构建指南中提到的步骤操作。
你可以手动选择要安装的模块,使用--module-subset
命令行参数来执行setup.py。这是我的安装脚本
python setup.py install --qpaths=/path/to/qpaths --debug \
--ignore-git --reuse-build
建议使用Python虚拟环境,而不是在全局Python中安装。
使用您首选的IDE调试过程¶
以下部分将指导您完成Qt Creator或VSCode的设置。