phpdbg是一個(gè)用于在命令行界面中進(jìn)行 PHP 代碼調(diào)試的工具。它提供了一種方便的方式來(lái)調(diào)試 PHP 腳本,用戶(hù)可以通過(guò)命令行交互式界面逐行執(zhí)行代碼、設(shè)置斷點(diǎn)、檢查變量?jī)?nèi)容等操作,可以有效提高 PHP 應(yīng)用程序的開(kāi)發(fā)和調(diào)試效率。
一、phpdbg特點(diǎn)
作為 SAPI 模塊實(shí)現(xiàn),phpdbg 可以在不影響代碼功能或性能的情況下完全控制運(yùn)行環(huán)境,旨在成為一個(gè)輕量級(jí)、功能強(qiáng)大且易于使用的 PHP 調(diào)試平臺(tái),具有以下特點(diǎn):
1、逐步調(diào)試功能;
2、靈活的斷點(diǎn)設(shè)置(包括類(lèi)方法、函數(shù)、文件行、地址和操作碼);
3、使用內(nèi)置的 eval() 函數(shù)輕松訪(fǎng)問(wèn) PHP;
4、用戶(hù)空間 API;
5、與 SAPI 無(wú)關(guān),易于集成;
6、支持 PHP 配置文件;
7、JIT Super Globals – 可自定義設(shè)置;
8、可選的讀取線(xiàn)支持,提供舒適的終端操作體驗(yàn)。
二、命令行選項(xiàng)
命令行選項(xiàng)如下表:
選擇 | 示例參數(shù) | 描述 |
---|---|---|
-c | -c/my/php.ini | 設(shè)置要加載php.ini文件 |
-d | -dmemory_limit=4G | 設(shè)置php.ini指令 |
-n | 禁用默認(rèn)php.ini | |
-q | 禁止顯示歡迎橫幅 | |
-在 | 啟用 oplog 輸出 | |
-b | 禁用顏色 | |
-我 | -imy.init | 設(shè)置 .phpdbginit 文件 |
-我 | 忽略默認(rèn)的 .phpdbginit | |
-或 | -Omy.oplog | 設(shè)置 oplog 輸出文件 |
-r | 運(yùn)行執(zhí)行上下文 | |
-rr | 運(yùn)行執(zhí)行上下文并在執(zhí)行后退出(不考慮斷點(diǎn)) | |
-和 | 為調(diào)試器/探查器生成擴(kuò)展信息 | |
-和 | 啟用逐步評(píng)估,小心! | |
-秒 | -s=, -s=foo | 使用可選分隔符從 stdin 讀取要執(zhí)行的代碼 |
-小號(hào) | -Scli公司 | 覆蓋 SAPI 名稱(chēng),小心! |
|
||
-l | -L4000型 | 設(shè)置遠(yuǎn)程控制臺(tái)端口 |
-一個(gè) | -a192.168.0.3 | 設(shè)置遠(yuǎn)程控制臺(tái)綁定地址 |
-x | 啟用 xml 輸出(而不是普通文本輸出) | |
-p | -p, -p=函數(shù), -p* | 輸出操作碼并退出 |
-h | 打印幫助概覽 | |
-在 | 打印版本號(hào) | |
— | — arg1 arg2 | 用于分隔 phpdbg 參數(shù)和 php $argv;在它后面附加任何$argv參數(shù) |
三、預(yù)定義常量
下列常量由此擴(kuò)展定義,且僅在此擴(kuò)展編譯入 PHP 或在運(yùn)行時(shí)動(dòng)態(tài)載入時(shí)可用:
- PHPDBG_VERSION (string)
- PHPDBG_FILE (int):Removed as of PHP 7.3.0.
- PHPDBG_METHOD (int):Removed as of PHP 7.3.0.
- PHPDBG_LINENO (int):Removed as of PHP 7.3.0.
- PHPDBG_FUNC (int):Removed as of PHP 7.3.0.
- PHPDBG_COLOR_PROMPT (int)
- PHPDBG_COLOR_NOTICE (int)
- PHPDBG_COLOR_ERROR (int)
四、phpdbg函數(shù)
1、phpdbg_break_file
phpdbg_break_file代表在文件中的一行處插入斷點(diǎn),使用方法:
phpdbg_break_file(string $file, int $line): void
在指定文件的指定行插入斷點(diǎn)。
2、phpdbg_break_function
phpdbg_break_function代表在函數(shù)入口處插入斷點(diǎn),使用方法:
phpdbg_break_function(string $function): void
在給定函數(shù)的入口處插入一個(gè)斷點(diǎn)。
3、phpdbg_break_method
phpdbg_break_method代表在方法入口處插入斷點(diǎn),使用方法:
phpdbg_break_method(string $class, string $method): void
在給定.方法類(lèi)的給定入口處插入斷點(diǎn)。
4、phpdbg_break_next
phpdbg_break_next代表在下一個(gè)操作碼處插入斷點(diǎn),使用方法:
phpdbg_break_next(): void
在下一個(gè)操作碼處插入斷點(diǎn)。
5、phpdbg_clear
phpdbg_clear代表清除所有斷點(diǎn),使用方法:
phpdbg_clear(): void
清除通過(guò) phpdbg_break_*() 函數(shù)或控制臺(tái)交互設(shè)置的所有斷點(diǎn)。
6、phpdbg_color
phpdbg_color代表設(shè)置某些元素的顏色,使用方法:
phpdbg_color(int $element, string $color): void
設(shè)置指定元素的顏色。
7、phpdbg_end_oplog
phpdbg_end_oplog使用方法:
phpdbg_end_oplog(array $options = []): ?array
8、phpdbg_exec
phpdbg_exec代表嘗試設(shè)置執(zhí)行上下文,使用方法:
phpdbg_exec(string $context): string|bool
9、phpdbg_get_executable
phpdbg_get_executable使用方法:
phpdbg_get_executable(array $options = []): array
10、phpdbg_prompt
phpdbg_prompt代表設(shè)置命令提示符,使用方法:
phpdbg_prompt(string $string): void
將命令提示符設(shè)置為給定的字符串。
11、phpdbg_start_oplog
phpdbg_start_oplog使用方法:
phpdbg_start_oplog(): void