首頁 > 開發工具 > VSCode > 主體

WINDOWS下用VSCODE除錯PHP7原始碼

(*-*)浩
發布: 2019-11-21 11:21:08
原創
4569 人瀏覽過

在之前一段時間涉及PHP擴展開發,對PHP源代碼有調試需求,然而網上大部分都是在LINUX下調試的教程,WINDOWS系統下的非常少並且過程也只是粗略一講。所以決定自己嘗試在WINDOWS下建立調試環境,畢竟,原理是相通的:)。

WINDOWS下用VSCODE除錯PHP7原始碼

1.準備

以下是我開發機上的配置,可以和我保持一致減少因為工具版本而出現額外問題的幾率。

1.Visual Code原始碼編輯偵錯工具                     (建議學習:vscode入門教學課程

2.Visual Studio2017code入門教學課程##2.Visual Studio2017code ##(VS一般都把WIN下開發需要的東西都帶全了,畢竟宇宙全家桶.....)

紅色標註區域必須安裝

WINDOWS下用VSCODE除錯PHP7原始碼3.PHP7原始碼(也可以選擇從github上拉取)

可以任意選擇一個打包版本的原始碼

WINDOWS下用VSCODE除錯PHP7原始碼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本文暫時用不上,不過你也可以先下載下來,因為編譯自帶的一些擴展所依賴的庫和頭文件都包含在裡面,當你要編譯自帶擴展的時候可以用上:)。

WINDOWS下用VSCODE除錯PHP7原始碼

2.編譯原始碼

#安裝VS後,執行在開始功能表裡的Visual Studio 2017資料夾下的x64 Native Tools Command Prompt for VS 2017

WINDOWS下用VSCODE除錯PHP7原始碼

#運行後,進入PHP7原始碼目錄

##1.執行buildconf.bat產生WIN下的configure檔(configure.js)WINDOWS下用VSCODE除錯PHP7原始碼

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裡。

WINDOWS下用VSCODE除錯PHP7原始碼

接著選擇選單偵錯->開啟配置,並選擇C (Windows)

最後將設定檔修改如下所示WINDOWS下用VSCODE除錯PHP7原始碼

我們之前編譯了PHP SAPI的cli,我們打開sapi/cli/php_cli.c源文件,定位到1197行的main函數內打上斷點。 WINDOWS下用VSCODE除錯PHP7原始碼

接著我們到VS的DEBUG控制面板運行偵錯即可。 WINDOWS下用VSCODE除錯PHP7原始碼

WINDOWS下用VSCODE除錯PHP7原始碼

隨後即可看到斷點命中。

附加進程偵錯配置也是大同小異,我們點選選單選項偵錯->開啟配置,並選擇新增配置,在彈出來的選擇清單中選擇C/C (Windows) AttachWINDOWS下用VSCODE除錯PHP7原始碼

最後的設定檔如下:WINDOWS下用VSCODE除錯PHP7原始碼

WINDOWS下用VSCODE除錯PHP7原始碼我們先用PHP -S啟動一個內建伺服器(這個php一定要是你編譯產生的php.exe檔),來方便示範附加程式偵錯,我啟動的位置是在我們之前建立的test. php檔案所在的目錄下。

WINDOWS下用VSCODE除錯PHP7原始碼存取效果如下:

WINDOWS下用VSCODE除錯PHP7原始碼

啟動偵錯的方式一樣,在VSCODE的偵錯面板裡面選擇(Windows) Attach運行即可。

WINDOWS下用VSCODE除錯PHP7原始碼

然後在彈出來的進程清單中選擇PHP進程後開始進入偵錯狀態。

WINDOWS下用VSCODE除錯PHP7原始碼我們test.php中使用了array_push函數,我們這次到這個函數的實作中斷點,打開ext/standard/array.c,定位到2540行,打上斷點。

WINDOWS下用VSCODE除錯PHP7原始碼接著在瀏覽器中造訪http://127.0.0.1:8080/test.php 即可觸發斷點。

WINDOWS下用VSCODE除錯PHP7原始碼4.最後

本文的偵錯方式也可以作為擴充開發的偵錯方式,當然,同樣的設定思路也適用於宇宙IDE Visual Studio ,我在WINDOWS下配置VSCODE調試PHP源代碼的思路也適用於其它平台(Mac/Linux......)。如果你有興趣在Visual Studio中調試PHP原始碼,不如以本文為思路嘗試著自己思考動手來試試~

以上是WINDOWS下用VSCODE除錯PHP7原始碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板