<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                PHPDBG是一個PHP的SAPI模塊,可以在不用修改代碼和不影響性能的情況下控制PHP的運行環境。 PHPDBG的目標是成為一個輕量級、強大、易用的PHP調試平臺。可以在PHP5.4和之上版本中使用。在php5.6和之上版本將內部集成。如; ![](https://img.kancloud.cn/bf/9d/bf9df91378469686ca7670d3557a7be5_733x278.png) **主要功能:** – 單步調試 – 靈活的下斷點方式(類方法、函數、文件:行、內存地址、opcode) – 可直接調用php的eval – 可以查看當前執行的代碼 – 用戶空間API(userland/user space) – 方便集成 – 支持指定php配置文件 – JIT全局變量 – readline支持(可選),終端操作更方便 – 遠程debug,使用java GUI – 操作簡便(具體看help) 安裝 ``` #cd /home/php/sapi #git clone htt[ps](http://www.111cn.net/fw/photo.html)://github.com/krakjoe/phpdbg #cd ../ #./buildconf --force #./config.nice #make -j8 #make install-phpdbg ``` 在PHP5.6和之上版本將內部集成 ## 運行時配置 這些功能的行為受php.ini中的設置影響。 **phpdbg配置選項** | 名稱 | 默認 | 多變 | 變更日志 |描述| | --- | --- | --- | --- | --- | | [phpdbg.eol](https://www.php.net/manual/en/phpdbg.configuration.php#ini.phpdbg.eol) | 2 | PHP\_INI\_ALL | 自PHP 7.0.0起可用 |用于輸出的行尾的種類。要設置該值,必須使用字符串別名之一| | [phpdbg.path](https://www.php.net/manual/en/phpdbg.configuration.php#ini.phpdbg.path) | ? | 6 | 自PHP 5.6.3起可用 | | # 預定義常量 下面的常量由該擴展定義,并且僅當該擴展已編譯為PHP或在運行時動態加載時才可用。 PHPDBG_VERSION(string) PHPDBG_FILE (int) 從PHP 7.3.0開始刪除。 PHPDBG_METHOD (int) 從PHP 7.3.0開始刪除。 PHPDBG_LINENO (int) 從PHP 7.3.0開始刪除。 PHPDBG_FUNC (int) 從PHP 7.3.0開始刪除。 PHPDBG_COLOR_PROMPT (int) PHPDBG_COLOR_NOTICE (int) PHPDBG_COLOR_ERROR (int) # 函數: * [phpdbg\_break\_file](https://www.php.net/manual/en/function.phpdbg-break-file.php)—在文件的一行插入一個斷點 * [phpdbg\_break\_function](https://www.php.net/manual/en/function.phpdbg-break-function.php)—在函數入口處插入一個斷點 * [phpdbg\_break\_method](https://www.php.net/manual/en/function.phpdbg-break-method.php)—在方法入口處插入一個斷點 * [phpdbg\_break\_next](https://www.php.net/manual/en/function.phpdbg-break-next.php)—在下一個操作碼處插入一個斷點 * [phpdbg\_clear](https://www.php.net/manual/en/function.phpdbg-clear.php)—清除所有斷點 * [phpdbg\_color](https://www.php.net/manual/en/function.phpdbg-color.php)—設置某些元素的顏色 * [phpdbg\_end\_oplog-](https://www.php.net/manual/en/function.phpdbg-end-oplog.php)說明 * [phpdbg\_exec](https://www.php.net/manual/en/function.phpdbg-exec.php)—嘗試設置執行上下文 * [phpdbg\_get\_executable](https://www.php.net/manual/en/function.phpdbg-get-executable.php)—說明 * [phpdbg\_prompt-](https://www.php.net/manual/en/function.phpdbg-prompt.php)設置命令提示符 * [phpdbg\_start\_oplog-](https://www.php.net/manual/en/function.phpdbg-start-oplog.php)說明 **命令行選項** | Option | Example Argument | Description | | --- | --- | --- | | \-c | \-c/my/php.ini | Set php.ini file to load | | \-d | \-dmemory\_limit=4G | Set a php.ini directive | | \-n | ? | Disable default php.ini | | \-q | ? | Suppress welcome banner | | \-v | ? | Enable oplog output | | \-b | ? | Disable color | | \-i | \-imy.init | Set .phpdbginit file | | \-I | ? | Ignore default .phpdbginit | | \-O | \-Omy.oplog | Set oplog output file | | \-r | ? | Run execution context | | \-rr | ? | Run execution context and quit after execution (not respecting breakpoints) | | \-e | ? | Generate extended information for debugger/profiler | | \-E | ? | Enable step through eval, careful! | | \-s | \-s=, -s=foo | Read code to execute from stdin with an optional delimiter | | \-S | \-Scli | Override SAPI name, careful! | | \-l | \-l4000 | Setup remote console ports | | \-a | \-a192.168.0.3 | Setup remote console bind address | | \-x | ? | Enable xml output (instead of normal text output) | | \-p | \-p, -p=func, -p\* | Output opcodes and quit | | \-h | ? | Print the help overview | | \-V | ? | Print version number | | \-- | \-- arg1 arg2 | Use to delimit phpdbg arguments and php $argv; append any $argv argument after it | 文件test\_phpdbg\_inc.php源代碼如下: ``` function phpdbg_inc_func() { echo "phpdbg_inc_func \n"; } ``` 文件test_phpdgb.php的源代碼如下: ``` include(dirname(__FILE__)."/test_phpdbg_inc.php"); class demo{ public function __construct(){ echo __METHOD__.":".__LINE__."\n"; } public function func($param){ $param++; echo "method func $param\n"; } public function __destruct(){ echo __METHOD__.":".__LINE__."\n"; } } function func(){ $param = "ali"; $param = $param + "baba"; echo "function func $param\n"; } $demo = new demo(); $demo->func(1); func(); phpdbg_inc_func(); ``` **啟動phpdbg** phpdbg安裝成功后,會在安裝目錄的bin目錄下(windows是與php.exe同級目錄)。進入bin目錄,直接輸入phpdbg即可。如下: ![](https://img.kancloud.cn/5e/20/5e20c80796150d7ed8f03cd928ff77de_590x141.png) 要想加載要調試的php腳本,只需要執行exec命令即可(win下需要絕對路徑?相對失敗了)。如下: ``` exec ./test_phpdbg.php //exec D:\phpstudy_pro\WWW\www.test.com\audit\test_phpdgb.php ``` ![](https://img.kancloud.cn/c9/b0/c9b0fab8d8732c0b77c0d7367dec382e_573x72.png) 當然我們也可以在啟動phpdbg的時候,指定e參數。如下: ``` phpdbg -e ./test_phpdbg.php ``` **設置斷點** 設置斷點的命令和gdb一樣。都是break,簡寫形式為b。不過具體的命令參數還是有所差異的。和gdb的斷點命令相同之處,它們都可以“按文件名:行號” 或者 行號的方式設置斷點。除此之外,phpdbg還提供了一些針對php特有的設置斷點的方式。如,根據opline設置斷點,根據opcode設置斷點等。 眾所周知,php代碼最終是解析成opcode,然后由php內核一條條執行。一條php語句,可能會解析成多條opcode。如果可以按opcode設置斷點,我們就可以更精確的跟蹤程序執行過程。下面我們來看看phapdbg設置斷點的具體示例。 按opline設置斷點: 這里所說的opline,就是以方法入口作為起點,當前代碼的行號。如test\_phpdgb.php文件中,第18行的代碼“$param = $param + “baba”;”的opline就是 2。 ``` prompt> b func#2 ``` ``` prompt> r ``` ![](https://img.kancloud.cn/59/93/5993f0f9181904dc2139889f24707374_743x240.png) **查看斷點:** ``` info break ``` ![](https://img.kancloud.cn/ac/dc/acdc58d8fccdcbabdffebff9bb2bf076_400x117.png) info break的顯示結果中會把斷點的類型也給顯示出來。#后面的數字是斷點號。我們可以根據斷點號刪除斷點 **刪除斷點:** ``` break del 0 ``` ![](https://img.kancloud.cn/f8/21/f82164e7468335c08a8dd125d73d7144_225x46.png) **查看代碼** 顯示指定函數的代碼: ...... l f func ...... ![](https://img.kancloud.cn/f6/8b/f68b07900a04712363c0a75ef0003903_369x97.png) 單步執行 step , 簡寫s。 .... s .... 繼續執行命令是continue,簡寫形式為c。 .... c .... 執行php代碼 可以在調試的過程中使用ev命令執行任意的php代碼。如: ``` prompt> ev $var = "val"; val prompt> ev var_dump($var); string(3) "val" ``` 可以通過這種方式,在調試過程中動態的修改變量值,查看執行效果。 ***** **查看幫助信息獲取更多用法** 通過help命令我們可以獲取幫助信息 ``` help ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看