使用除錯建置

在 Python 套件中開發原生程式碼時,您可能會想要使用除錯建置。若要執行此操作,我們需要將 -Dbuildtype=debug 選項(相當於 -Ddebug=true -Doptimization=0)傳遞給 meson setup。此外,最實用的方式可能是設定具有固定建置目錄的可編輯建置。如此一來,已安裝的除錯建置中的共享函式庫將包含正確的路徑,而不是指向 meson-python 通常會使用的臨時建置目錄的路徑。IDE 和其他工具將能夠在除錯期間顯示正確的檔案位置和行號。

我們可以使用以下 pip 呼叫來完成所有這些操作

$ pip install -e . --no-build-isolation \
    -Csetup-args=-Dbuildtype=debug \
    -Cbuild-dir=build-dbg

您的套件的此除錯建置將與 Python 直譯器的常規或除錯建置一起運作。除錯 Python 直譯器並非必要,但可能很有用。它可以從原始碼建置,或者您可以從您選擇的套件管理員中取得(通常使用類似 python-dbg 的套件名稱)。請注意,使用除錯 Python 直譯器不會產生您自己套件的除錯建置 - 您必須使用 -Dbuildtype=debug 或等效的標記來進行此操作。

警告

在 Conda 環境中,當環境啟用時,通常會設定類似 CFLAGSCXXFLAGS 的環境變數。這些環境變數包含類似 -O2 的最佳化標記,這會覆寫 -Dbuildtype=debug 所暗示的最佳化層級。為了避免這種情況,請取消設定這些變數

$ unset CFLAGS
$ unset CXXFLAGS

最後,請注意,將建置類型從預設值 release 變更為 debug 也會導致 meson-python 啟用(或者說,不停用)斷言,方法是不定義 NDEBUG 巨集(請參閱 預設建置選項 下的 b_ndebug)。