gpt4 book ai didi

php - 中断 Xdebug 中的属性更改

转载 作者:可可西里 更新时间:2023-11-01 13:37:07 31 4
gpt4 key购买 nike

我试图找出某个对象的某个属性在何处被修改。由于 PHP 的高度动态特性($o->$prop = $val 等),这几乎不可能通过简单的代码分析来完成。有没有办法启动调试 session 并在属性被修改的行中断? (添加一个带有条件 xdebug_break() 的魔法 __set 调用在简单的情况下可能会有所帮助,但如果该类或其祖先之一已经有一个魔法 setter ,它会变得非常复杂,所以这也不是一个好的解决方案。)

最佳答案

根据 xdebug 文档,似乎应该是一种中断变量更改的方法。 http://xdebug.org/docs-dbgp.php#breakpoints

watch: break on write of the variable or address defined by the expression argument

但源代码表明文档领先于其实际功能: https://github.com/xdebug/xdebug/blob/master/xdebug_handler_dbgp.c#L875

if (strcmp(CMD_OPTION('t'), "watch") == 0) {
RETURN_RESULT(XG(status), XG(reason), XDEBUG_ERROR_BREAKPOINT_TYPE_NOT_SUPPORTED);
}

我实际上无法在存储库的其他任何地方找到字符串“watch”,所以我假设它目前不受支持。

Xdebug 的错误跟踪器中似乎存在错误:

http://bugs.xdebug.org/view.php?id=514

关于php - 中断 Xdebug 中的属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900850/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com