在之前一段時間涉及PHP擴展開發,對PHP源代碼有調試需求,然而網上大部分都是在LINUX下調試的教程,WINDOWS系統下的非常少並且過程也只是粗略一講。所以決定自己嘗試在WINDOWS下建立調試環境,畢竟,原理是相通的:)。
1.準備
以下是我開發機上的配置,可以和我保持一致減少因為工具版本而出現額外問題的幾率。
1.Visual Code原始碼編輯偵錯工具 (建議學習:vscode入門教學課程
2.Visual Studio2017code入門教學課程##2.Visual Studio2017code ##(VS一般都把WIN下開發需要的東西都帶全了,畢竟宇宙全家桶.....)
紅色標註區域必須安裝
3.PHP7原始碼(也可以選擇從github上拉取)
可以任意選擇一個打包版本的原始碼
4.PHP7- SDK
我的開發機是64位,因為是編譯PHP7所以選擇了64位的deps-7.1-vc14-x64(擴充依賴函式庫包),建立php-sdk-binary-tools資料夾,將php-sdk-binary-tools-xxx.zip解壓縮至這個資料夾中,建立deps-vc14-x64資料夾,也將deps-7.1-vc14-x64.7z解壓縮至這個資料夾。
同時將php-sdk-binary-tools中的bin路徑加入WINDOWS系統變數PATH。 deps-7.1-vc14-x64本文暫時用不上,不過你也可以先下載下來,因為編譯自帶的一些擴展所依賴的庫和頭文件都包含在裡面,當你要編譯自帶擴展的時候可以用上:)。
2.編譯原始碼
#安裝VS後,執行在開始功能表裡的Visual Studio 2017資料夾下的x64 Native Tools Command Prompt for VS 2017
#運行後,進入PHP7原始碼目錄
##1.執行buildconf.bat產生WIN下的configure檔(configure.js)
2.可以執行configure.bat --help查看支援的編譯參數3.執行configure.bat --disable-all --enable- cli --enable-debug(為了示範簡單編譯,可以自行加入參數)4.執行nmake指令開始編譯以本機的配置,編譯完成後的執行檔在來源程式碼目錄中的x64/Debug_TS下,後面就可以準備開始偵錯了。3.使用VSCODE調試
調試方式可以分2種,一種是附加進程調試,一種是運行啟動調試,兩種方式都會介紹,先介紹運行啟動調試。 先建立一個用於測試的php的原始碼文件,我會建立在原始碼目錄下的x64/Debug_TS裡。 接著選擇選單偵錯->開啟配置,並選擇C (Windows)最後將設定檔修改如下所示
我們之前編譯了PHP SAPI的cli,我們打開sapi/cli/php_cli.c源文件,定位到1197行的main函數內打上斷點。
接著我們到VS的DEBUG控制面板運行偵錯即可。
隨後即可看到斷點命中。附加進程偵錯配置也是大同小異,我們點選選單選項偵錯->開啟配置,並選擇新增配置,在彈出來的選擇清單中選擇C/C (Windows) Attach
最後的設定檔如下:
我們先用PHP -S啟動一個內建伺服器(這個php一定要是你編譯產生的php.exe檔),來方便示範附加程式偵錯,我啟動的位置是在我們之前建立的test. php檔案所在的目錄下。
存取效果如下:
啟動偵錯的方式一樣,在VSCODE的偵錯面板裡面選擇(Windows) Attach運行即可。
然後在彈出來的進程清單中選擇PHP進程後開始進入偵錯狀態。
我們test.php中使用了array_push函數,我們這次到這個函數的實作中斷點,打開ext/standard/array.c,定位到2540行,打上斷點。
接著在瀏覽器中造訪http://127.0.0.1:8080/test.php 即可觸發斷點。
4.最後
本文的偵錯方式也可以作為擴充開發的偵錯方式,當然,同樣的設定思路也適用於宇宙IDE Visual Studio ,我在WINDOWS下配置VSCODE調試PHP源代碼的思路也適用於其它平台(Mac/Linux......)。如果你有興趣在Visual Studio中調試PHP原始碼,不如以本文為思路嘗試著自己思考動手來試試~
以上是WINDOWS下用VSCODE除錯PHP7原始碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!