如果你认为 Xdebug 有用,请考虑支持该项目

更新

[2020-05-29] — Xdebug 2.9.6

修复的错误

修复错误 #1782:Cookie XDEBUG_SESSION 很快就会被拒绝,因为它 “sameSite” 属性设置为了 none
修复错误 #1787:分支覆盖数据不能总是遵循行/函数格式
修复错误 #1790:var_dump() 或者使用 protobuf 扩展调试时的段错误
[2020-04-25] — Xdebug 2.9.5

修复的错误

修复错误 #1772:destructor 内抛出异常时崩溃
修复错误 #1775:在 RINIT 期间其他扩展编译一个 PHP 文件时的段错误
修复错误 #1779:命名空间内嵌套的多行内置函数不能被覆盖
[2020-03-23] — Xdebug 2.9.4

修复的错误

修复错误 #1763:在 ZTS 模式下设置 opcache 覆盖时崩溃
修复错误 #1766:用 DBGp detach 命令会关闭整个进程中的远程调试
[2020-03-13] — Xdebug 2.9.3

修复的错误

修复错误 #1753:放置的断点使用了错误文件的信息
修复错误 #1758:在 try catch 中 Xdebug 改变了 get_last_results 的结果
修复错误 #1759:用户注册的 opcache 程序应该调用已被其他扩展设置的 opcache 程序
[2020-01-31] — Xdebug 2.9.2

修复的错误

修复错误 #1735:DBGp eval 命令让警告提升为异常会导致响应不同步
修复错误 #1736: 在 RINIT 中其他扩展运行导致的段错误
修复错误 #1739:跟踪脚注未写入
[2020-01-16] — Xdebug 2.9.1

修复的错误

修复错误 #1721:Header 可能不包含第0行未知的 NULL 字节
修复错误 #1727:由于放置了断点调试器比预期停止得多
修复错误 #1728:INIT_STATIC_METHOD_CALL 不能被重载
修复错误 #1731:var_dump DateTime 不能输出属性
修复错误 #1733:SEND_VAR_NO_REF_EX opcode,在 require() 中使用时,不能被重载
修复错误 #1734:DBGp "source" 使用超出范围的开始行号的段错误
[2019-12-09] — Xdebug 2.9.0

改进

修复错误 #1723:类、函数预分析提升代码覆盖速度

移除的功能

修复错误 #1301:移除聚合的 profiler 功能
修复错误 #1720:移除多余的 xdebug.remote_handler 设置

修复的错误

修复错误 #1722:在 FreeBSD 上生成警告问题
修复错误 #1724:在变量转储程序中丢失属性类型和未初始化的值
[2019-12-02] — Xdebug 2.8.1

修复的错误

修复错误 #1717:从2.7.2升级到2.8.0代码覆盖变慢
[2019-10-31] — Xdebug 2.8.0

修复的错误

修复错误 #1664:垃圾回收和复杂函数语句的段错误
修复错误 #1699:调试 Phalcon 项目期间崩溃
修复错误 #1705:当调试 ionCube 被使用时崩溃
修复错误 #1708:eval 有属性的对象时崩溃 : Crash on evaluating object with properties
修复错误 #1709:错误的数据类型破坏了 Big Endian 构建的测试
修复错误 #1713:在代码覆盖中 INIT_FCALL 不能重载
[2019-08-26] — Xdebug 2.8.0beta2

修复的错误

修复错误 #1540:当在 php.ini 中关闭时代码覆盖应该不运行
修复错误 #1573:使用 exception_handler 创建了一个额外坏的 profiler 文件
修复错误 #1589:profile 文件里 auto_prepend_file 使用的函数名丢失
修复错误 #1613:可恢复的致命错误,显示错误的名称
修复错误 #1652:调试器初始状态的 detach 问题
修复错误 #1676:shutdown 函数 Xdebug 不能写跟踪脚注
修复错误 #1689:跟踪显示返回值,和函数退出信息,没有进入信息
修复错误 #1691:代码覆盖丢失流畅的接口函数调用
修复错误 #1698:切换 PHP 7.4 Windows 版本为 VS17
修复错误 #1700:Xdebug 可能滥用不可变类标记
[2019-07-25] — Xdebug 2.8.0beta1

修复的错误

修复错误 #1679:代码覆盖未击中作为函数参数的静态属性
修复错误 #1682:在调试器 XML 匿名类中无效的 NULL byte
修复错误 #1683:由于 PHP 7.4alpha3 中 ASSIGN_ADD 和友好操作的更改 Xdebug 不能编译
修复错误 #1687:使用恰当的进程 ID 记录日志和跟踪 “正确的进程”
修复错误 #1688:只有当单步调试开启时使用 getpid() 提升性能
[2019-06-28] — Xdebug 2.8.0alpha1

新增功能

改进的问题 #1599:增加支持 PHP 7.4

改进

改进的问题 #1388:支持断点 'resolved' 标记
改进的问题 #1664:当也添加一个新的断点时运行断点解析

修复的错误

修复错误 #1660:方法中的返回断点不能立即暂停

移除功能

修复错误 #1666:移除 xdebug.extended_info 设置
[2019-05-06] — Xdebug 2.7.2

修复的错误

修复错误 #1488: Rewrite DBGp 'property_set' 总是使用 eval
修复错误 #1586: 在调试器使用 'eval'命令期间,error_reporting() 的返回值不正确。
修复错误 #1615: 当远程调试器开启时关闭 Zend OPcache。
修复错误 #1656: remote_connect_back 如果当前有多个值 header 值改变了。
修复错误 #1662: __debugInfo 不应该使用用户定义的类。
[2019-04-05] — Xdebug 2.7.1

修复的错误

修复错误 #1646: 在错误信息中丢失了换行符
修复错误 #1647: 当使用条件断点时内存损坏
修复错误 #1641:使用 getpid (Kees Hoekzema) 性能下降
[2019-03-06] — Xdebug 2.7.0

修复的错误

修复错误< #1520: 当变量和属性名字中有 '-'时,Xdebug 不能处理他们
修复错误< #1577: 在 PHP 7.3 上代码覆盖路径分析链式捕获失败
修复错误< #1639; 在 GCC 8 上编译警告、错误或者由于“中断故意丢失”发出的叮当声
修复错误< #1642:调试器给出了:“警告:Header 不能包含 NULL 字节”
[2019-02-15] — Xdebug 2.7.0RC2

修复的错误

修复错误 #1551:具有空值的属性不能很好的表现
修复错误 #1621:在 32 位平台,Xdebug 无法纯净的编译
修复错误 #1625:在 PHP 7.3.0 和 PHP 7.3.1 中解决 ABI 冲突
修复错误 #1628:当垃圾回收运行时,PHP 函数名被构造记录,不能释放
修复错误 #1629:SOAP 客户端、服务端探测代码不处理继承类
[2019-02-01] — Xdebug 2.7.0rc1

修复的错误

修复错误 #1571:在命名空间中,闭包的文件和行号信息不显示。
修复错误 #1578:编译错误,由于老版 GCC "zif_handler" 的重复定义。
修复错误 #1583:当 OPcache 的紧凑文字优化打开时,Xdebug 崩溃。
修复错误 #1598:对使用 PHP 7.3 及更高版本加载的 OPcache 进行路径、分支覆盖。
修复错误 #1620在关闭内存管理器时,垃圾回收统计除以 0。
[2018-09-20] — Xdebug 2.7.0beta1

改进

修复错误 #1519:支持 PHP 7.3 (Christoph M. Becker 参与贡献)
[2018-08-01] — Xdebug 2.6.1

修复的错误

修复错误 #1525:命名空间过滤采用相等匹配而不是前缀匹配
修复错误 #1532:当使用远程调试且 eval() 抛出错误时,产生 SIGABRT
修复错误 #1543:由于(内部)字符串处理变化导致的各种内存泄露
修复错误 #1556:当 register_shutdown_function() 被名称为 call_user_func* 的函数调用时的错误
修复错误 #1557:在 void xdebug_build_fname 中移除 'return'
修复错误 #1568:不能调试拥有数字键的对象属性

改进

修复错误 #1487:在 Travis 上重新启用 IPv6 测试
[2018-04-01] — Xdebug 2.7.0alpha1

改进

修复错误 #938:支持远程调试 PHP 分支脚本。(由 Brad Wilson 贡献)
修复错误 #1487:在 Travis 上重新启用 IPv6 测试。

修复的错误

修复错误 #1526:命令空间过滤采用相等匹配而不是前缀匹配。
修复错误 #1532:当使用远程调试且 eval() 抛出一个错误时,产生 SIGABRT。
修复错误 #1543:由于(内部)字符串处理变化导致的各种内存泄露。
[2018-01-29] — Xdebug 2.6.0

修复的错误

修复错误 #1522:基于 S390 远程调试测试失败 (Big Endian)。
[2018-01-23] — Xdebug 2.6.0RC2

修复的错误

修复错误 #1521:2.6.0RC1 压缩包丢失 xdebug_gc_stats.* 。
[2018-01-22] — Xdebug 2.6.0RC1

新增的功能

修复错误 #1506:新增垃圾收集统计功能(Benjamin Eberlei)。
修复错误 #1507:新增函数以访问 Zend Engine 垃圾收集指标(Benjamin Eberlei)。

改进

修复错误 #1510:更新 switch/case "break" 丢失注释的问题,使用 GCC 7 的新 "fallthrough" 属性。
修复错误 #1511:通过新的配置选项检测和使用编译器标志。

修复的错误

修复错误 #1335:使用 PhpStorm 调试有时给出 "can not get property"。
修复错误 #1454:来自 __call() 方法无效的内存读取或段错误。
修复错误 #1508:代码覆盖过滤器在 xdebug_common_assign_dim 处理程序中不生效。
修复错误 #1509:PHP 7.2 中 switch 内的 case 语句代码覆盖丢失。
修复错误 #1512:Xdebug 不能正确的编码、转义引号和 \0 字符。
修复错误 #1514:一个包含 NULL 字符的变量名在 NULL 字符处被截断。
修复错误 #1515:一个包含 NULL 字符的对象属性名在 NULL 字符处被截断。
修复错误 #1516:不能获取变量或者对象属性当其中包含 \0 字符。
修复错误 #1517:通知不正确的指定错误类型为 “type_string” 而不是 “type”。
[2017-12-28] — Xdebug 2.6.0beta1

新增的功能

修复错误 #1059:增加跟踪,堆栈跟踪,代码覆盖的过滤功能。
修复错误 #1437:当一个分析文件被生成时增加 X-Profile-File-Name header。

改进

修复错误 #1493:在 Windows CI 中 AppVeyor 里运行测试套件。
修复错误 #1498:使用 config.w32 里新的 ZEND_EXTENSION API 生成脚本。 (Kalle)

修复的错误

修复错误 #702:检测使用 =& 变量跟踪是否生效。
修复错误 #1501:Xdebug var dump 尝试转换属性。
修复错误 #1502:SEND_REF 行被覆盖时不能被标记。
[2017-12-02] — Xdebug 2.6.0alpha1

新增的功能

改进的错误 #474:增加“内存”输出到分析文件,以找出内存分配的位置。
改进的错误 #575:出现错误时转储超级全局内容到错误日志,就像堆栈跟踪发生的情况一样。
改进的错误 #964:当选择 remote_connect_back 主机时,解析 X-Forwarded-For 作为第一个 IP 地址(Steve Easley)。
改进的错误 #990:增加 DBGP:通知和警告的通知将显示在 IDE 中。
改进的错误 #1312:实现拓展的属性功能,远程调试支持名称和值使用低 ASCII 字符。
改进的错误 #1323:跟踪时增加 xdebug.filename_format 设置来配置文件名的格式。
改进的错误 #1379:xdebug.remote_host 增加支持 Unix 域套接字(Sara Golemon)。
改进的错误 #1380:当调试器连接时,增加 xdebug_is_debugger_active() 返回 true。
改进的错误 #1391:通过 xdebug_call_* 函数的新参数增加了对早期堆栈帧的支持。
改进的错误 #1420:处理 PHP 7.2 中 switch/case 的新方法。
改进的错误 #1470:增加 xdebug.remote_timeout 来配置连接超时。
改进的错误 #1495:当格式化文件名时 var_dump() 也使用新的 xdebug.filename_format。

改进

改进的错误 #847:xdebug.trace_output_name 增加支持 "%s" 标识符。
改进的错误 #1384:Ubuntu 16.04 上使用 GCC 5.4.x 的编译错误。
改进的错误 #1401:在连接终端的情况下改进错误消息。
改进的错误 #1430:更改 DBGp 测试使用 TEST_PHP_EXECUTABLE 而不是硬编码 'php'。
改进的错误 #1484:将 FD_CLOEXEC 和调试套接字一起使用可防止 FD 泄露到分叉进程(Chris Wright)。
改进 xt.vim 中的 foldexpr 以正确折叠行(Donie Leigh)。

修复的错误

修复错误 #1272:property_get 不能返回 SimpleXMLElement 的属性。
修复错误 #1305:调试时无法获取带引号的属性名。
修复错误 #1431:在 add_name_attribute_or_element 中,修复了 "use after free"。
修复错误 #1432:修复了 xdebug_path_info_dtor 中的内存泄露。
修复错误 #1449:数组元素健包含低 ASCII 字符时调试中断。
修复错误 #1471:返回赋值语句和三元运算符,跟踪中断。
修复错误 #1474:由于变量解析和读取机制没有正确处理临时哈希表而导致的崩溃(Nikita Popov, Derick)。
修复错误 #1481:修复了 s390x and ppc64 builds (Remi Collet).
修复错误 #1486:超过 32 个案例的 ZEND_SWITCH_LONG / ZEND_SWITCH_STRING 崩溃。
修复错误 #1496:重写了 README.rst,更清晰的呈现了如何安装和构建 Xdebug。

更新

修复错误 #1411:当达到最大嵌套级别时,使用 Error(抛出的) 而不是 fatal error。

移除的功能

改进的错误 #1377:删除对 PHP 5.5 和 5.6 的支持,现在只支持 PHP 7。
[2017-06-21] — Xdebug 2.5.5

修复的错误

修复错误 #1439:由于智能分支,TYPE_CHECK 需要重载。
修复错误 #1444:在一个多行函数调用中,代码覆盖丢失了一个变量。
修复错误 #1446:在一个属性中如果使用 isset,代码覆盖丢失 elseif。
[2017-05-15] — Xdebug 2.5.4

修复的错误

修复错误 #799:函数跟踪报告是基于类而不是对象名。
修复错误 #1421:修复当 pcntl_exec 不存在时 set_time_limit 挂起(Frode E. Moe)。
修复错误 #1429:代码覆盖不覆盖空合并。
修复错误 #1434:代码覆盖在 32-bit 结构上的段错误。
[2017-04-18] — Xdebug 2.5.3

修复的错误

修复错误 #1421: Xdebug 在 pcntl 不存在的情况下加载时崩溃。
[2017-04-17] — Xdebug 2.5.2

修复的错误

修复错误 #701:在跟踪中,函数作为数组索引显示 ???
修复错误 #1403:代码覆盖不能覆盖 BIND_STATIC
修复错误 #1404:执行时间计算不正确
修复错误 #1413:代码覆盖在 PHP 7.1.3 的不幸事件
修复错误 #1414:加载了 OPcache 的跟踪中丢失变量赋值
修复错误 #1415:加载了 OPcache 的多个 catch 构造崩溃。
修复错误 #1416:如果生成器没有启动,跟踪文件中不应该包含生成器的第一个结果
修复错误 #1417:由于提取模式不正确,提取静态类的上下文属性失败
修复错误 #1419:当脚本以 “pcntl_exec()” 结尾时没有编写摘要
[2017-02-26] — Xdebug 2.5.1

修复的错误

修复错误 #1057:将所有设置的 xdebug.ini 添加到包中
修复错误 #1165:DBGp: step_out 跳过后续的函数调用
修复错误 #1180:使用非标准开启和结束,代码覆盖崩溃
修复错误 #1278:PHP 7 中 Xdebug 使用 XDEBUG_CC_UNUSED 不能处理 prefill-from-oparray
修复错误 #1300:Xdebug 函数不会将其签名暴露给反射
修复错误 #1313:从错误的内存内置中挑选 __call() 参数
修复错误 #1329:当打印出一个堆栈和函数参数,Xdebug 读取未初始化的 zvals 和 free() 内存
修复错误 #1381:由于丢失 FETCH_DIM_W 代码覆盖丢失行
修复错误 #1385:不能读取 IS_INDIRECT 属性
修复错误 #1386:可执行代码不能被显示为可执行、已执行
修复错误 #1392:由于丢失结构定义不能在 FressBSD 上编译
修复错误 #1394:代码覆盖不能覆盖 instanceof (在 elseif 中)
[2016-12-04] — Xdebug 2.5.0

改进

改进的错误 #1232:添加内存增量到 HTML 跟踪中
改进的错误 #1365:允许 remote_connect_back 通过 XDEBUG_CONFIG 设置

修复的错误

修复错误 #1168:添加防御性检查以防止无限循环
修复错误 #1242:Windows 上使用 Ecplise 的 Xdebug 存在断点 ID 问题
修复错误 #1343:超出了 32 位范围的数字索引错误值
修复错误 #1357:函数参数可变被报告为未执行
修复错误 #1361:Windows 上的远程调试连接问题 (Anatol Belski)
修复错误 #1373:由于没有清空符号表,在 zend_hash_apply_with_arguments 里调试时崩溃
[2016年11月12日] — Xdebug 2.5.0RC1

改进

改进的错误 #998:增加支持 IPv6 (Thomas Vanhaniemi)
改进的错误 #1297:开始支持 PHP 7.1

修复的错误

修复错误 #1295:当 sockfd 很大时尝试建立连接,Apache 崩溃 (SIGSEGV)
修复错误 #1303:POLLRDHUP 不支持超出 Gnu/Linux 的情况
修复错误 #1331:代码覆盖中的段错误

移除的功能

删除了对 PHP 版本小于 5.5 的支持
[2016年8月2日] — Xdebug 2.4.1

修复的错误

修复错误 #1106 :使用 __debugInfo 在类之后抛出一个异常,会给出 2 处错误
修复错误 #1241 : FAST_CALL/FAST_RET take #2
修复错误 #1246 :路径和分支覆盖率应该每次请求时被初始化,而不是在全局中
修复错误 #1263 :操作码启用时的代码覆盖片段故障
修复错误 #1277 :profiling 启用时在 RSHUTDOWN 中使用用户空间的崩溃
修复错误 #1282 :Windows 系统上整数大于 32 bit 时 var_dump() 的出错问题
修复错误 #1288 :未捕获的异常信息没有包含在错误段中
修复错误 #1291 :Mac OS X 上 debugclient 安装失败
修复错误 #1326 :PHP 7.x 上跟踪和生成器崩溃
修复错误 #1333 :过滤器访问内存结构在其释放后
[2016年3月3日] — Xdebug 2.4.0

修复的错误

修复错误 #1258:PHP 7 中的案例和代码覆盖
修复错误 #1261:由于 spl_autoload(),PHP 7 版本中 "pkgtools"、xdebug.so 中的错误片段
修复错误 #1262:xdebug_var_dump() 中 overload_var_dump=0 的混乱
修复错误 #1266:PHP 7 中 xdebug_dump_superblobals() 总是转储空的堆栈信息
修复错误 #1267:AIX 构建问题
修复错误 #1270:PHP 7 中字符串解析标记未覆盖
[2016年1月25日] — Xdebug 2.4.0RC4

修复的错误

修复错误 #1220 :如果 var_dump() 输出过大的错误片段
修复错误 #1223 :PHP 7 中执行一个 DBGp 求值命令时,Xdebug 的崩溃问题
修复错误 #1229 :GCC 4.8 在 -O2 时移除需要的代码的问题
修复错误 #1235 :由于 ZEND_FETCH_STATIC_PROP*,Xdebug 不能在 PHP 7.1-dev 中编译
修复错误 #1236 :调试会话中不能移除断点
修复错误 #1238 :当枚举变量引用时,Xdebug 崩溃-- SIGSEGV
修复错误 #1239 :PHP 7.1 中由于 CATCH 操作码跳跃机制的更换引起的崩溃
修复错误 #1241 :在分支/死代码分析和路径覆盖时,Xdebug 不能处理 FAST_RET 和FAST_CALL 操作码
修复错误 #1245 :PHP 7 中 xdebug_dump_superglobals dumps *uninitialized*
修复错误 #1250 :添加 PHP 版本描述到调试日志和 profile 文件中
[2015年12月12日] — Xdebug 2.4.0RC3

修复的错误

修复错误 #1221: :Windows x64 PHP 7 zend_parse_parameters 问题
修复错误 #1229: :探测 GCC 4.8 和禁用优化。
让测试也适用于 Windows 平台。终于完成了,经过了 13 年。
[2015年12月2日] — Xdebug 2.4.0RC2

修复的错误

修复错误 #1181 :使用 zend_read_property 远程调试不能处理异常
修复错误 #1189 :从远程调试响应中移除地址属性
修复错误 #1194 :assert() 中 错误信息 HTML-encoded 两次
修复错误 #1210 :PHP 7 中 foreach 和死代码代码覆盖时的段错误
修复错误 #1215 :如果 xdebug.trace_output_dir 目录不存在的 SIGSEGV
修复错误 #1217 :xdebug.show_error_trace 不应该默认启用
修复错误 #1218 :转换为整数,Xdebug 混乱出现异常代码
修复错误 #1219 :设置 xdebug.overload_var_dump 默认值为 2,默认包含文件名/行号
全局变量中 ini 设置,PHP 5 中使用 long,PHP 7 中使用 zend_long 。
[2015年11月21日] — Xdebug 2.4.0RC1

修复的错误

修复错误 #1195 :foreach 和代码覆盖的错误段
修复错误 #1200 :PHP 7 中附加的操作码需要被过载
修复错误 #1202 :当远程调试时匿名类不能正确操作
修复错误 #1203 :当远程调试时访问没有静态属性的类的静态属性时的崩溃
修复错误 #1209 :创建函数构建函数名时的错误段
[2015年11月5日] — Xdebug 2.4.0beta1

改进

实现的部分 #1109:添加对 PHP 7 的支持
实现的部分 #1153:添加函数监控功能
实现的部分 #1183:xdebug.show_error_trace 中添加允许/不允许显示每个错误(抛出的)的堆栈跟踪

修复的错误

修复错误 #1070:用 php-fpm 打开文件太多错误:连接未关闭(由 Sean Dubois 修补)
修复错误 #1123:使用 Xdebug 2.3.1 时 PHPUnit 覆盖比不用时呈指数级的变慢
修复错误 #1166:在 __debugInfo() 中使用 $this 导致无限递归
修复错误 #1173:xdebug_get_monitored_functions() 中的片段错误
修复错误 #1182: 使用 PHPStorm with PHP 7 RC1 和 xdebug 2.4-dev,断点被忽略
修复错误 #1192:"return" 生成器中死代码分析不工作

更多往期历史版本,请前往原站 https://xdebug.org/updates.php