WINDOWS下用VSCODE調試PHP7源代碼

0.前言

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

1.準備

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

1.Visual Code源代碼編輯調試工具

2.Visual Studio Community2017(VS一般都把WIN下開發需要的東西都帶全了,畢竟宇宙全家桶.....)
紅色標注區域必須安裝

VS安裝配置

3.PHP7源代碼(也可以選擇從github上拉取)
可以任意選擇一個打包版本的源代碼

選擇一個PHP源代碼打包版本

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

PHP-SDK

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源代碼,不如以本文為思路嘗試著自己思考動手來試試~

by zhiyanglee | email:zhiyanglee@foxmail.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 我們非常榮幸地宣布 Visual Studio 2017 現已推出! 此次發布提供新的輕量模塊式安裝體驗,可根據自...
    三夢哥閱讀 7,779評論 0 6
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 性能改進 改進性能是此版本的一個重點所在。 除對提高內存和響應作出一些優化外,整個 JavaScript/Type...
    三夢哥閱讀 3,733評論 0 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,536評論 25 708
  • 我想輕輕地走近你 然后靜靜地讀懂你 我想靜靜地讀懂你 只為無聲地溫暖你 倘若 我不能輕輕地走近你 我就遠遠地,靜靜...
    小兵001閱讀 515評論 1 1