使用除錯建置¶
在 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 環境中,當環境啟用時,通常會設定類似 CFLAGS
和 CXXFLAGS
的環境變數。這些環境變數包含類似 -O2
的最佳化標記,這會覆寫 -Dbuildtype=debug
所暗示的最佳化層級。為了避免這種情況,請取消設定這些變數
$ unset CFLAGS
$ unset CXXFLAGS
最後,請注意,將建置類型從預設值 release
變更為 debug
也會導致 meson-python
啟用(或者說,不停用)斷言,方法是不定義 NDEBUG
巨集(請參閱 預設建置選項 下的 b_ndebug
)。