Php 调试时让xdebug跳过某些函数
所以基本上我使用Zend Framework的autoloader来自动加载我的函数。但正因为如此,无论何时调试,如果调用任何函数,xdebug都会在调用实际函数之前转到自动加载函数 因此,如果我调用函数Php 调试时让xdebug跳过某些函数,php,debugging,zend-framework,xdebug,Php,Debugging,Zend Framework,Xdebug,所以基本上我使用Zend Framework的autoloader来自动加载我的函数。但正因为如此,无论何时调试,如果调用任何函数,xdebug都会在调用实际函数之前转到自动加载函数 因此,如果我调用函数func(),它将首先转到autoload(),然后再调用func(),这会增加调试时间等方面的成本 理想情况下,如果我调用func(),它应该直接转到func(),同时仍然使用自动加载器 有没有办法指定xdebug(或使用任何PHP/Zend hack等)在调试时总是跳过某个函数(在本例中是我
func()
,它将首先转到autoload()
,然后再调用func()
,这会增加调试时间等方面的成本
理想情况下,如果我调用func(),它应该直接转到func(),同时仍然使用自动加载器
有没有办法指定xdebug(或使用任何PHP/Zend hack等)在调试时总是跳过某个函数(在本例中是我的自动加载函数)如果你是单步执行代码,那么你真的应该考虑使用断点。如果在正在调查的代码块的开头设置断点,则可以使用“运行到断点”选项跳过在正在调查的代码之前运行的所有代码 如果在要调查的类的构造函数的开始处设置断点,或者在确定对象实例化正常的情况下在要调查的方法的开始处设置断点,则可以跳过自动加载程序 Netbeans和EclipsePDT都支持通过单击要调查的代码行号来设置断点
此外,调试器中还有“step out”选项,允许您跳出使用“step in”选项跳入的函数/方法。如果你发现自己在自动加载器里,就离开它 在eclipse中,pdt在首选项中: PHP->调试->步骤过滤 单击“添加过滤器”,我添加了Autoloader.inc,不再需要查看它
有关更多的视觉说明,请参见我知道这是一个老问题,但我是从谷歌来到这里的。 在phpStorm中,您可以忽略将其添加到以下位置的特定函数: 首选项>PHP>调试>步骤过滤器 如果是非静态方法,则使用->或::如果是静态方法
您所说的“转到自动加载功能”是什么意思?xdebug如何“进入”那里?调试器进入自动加载功能Yes,因为这是您的程序所做的。把它藏起来,然后在里面放个bug可能会更烦人。我不太明白这会如何显著增加“调试成本”…不,这更烦人。这是zend代码,所以没有bug。这增加了调试成本,因为每次调用我真正感兴趣的其他函数时,我都必须不断地遍历这个函数,而我对调试没有兴趣,我肯定是遗漏了什么。。但是你不能在你感兴趣的函数中设置一个断点吗?如果你退出自动加载程序,典型的结果是,你不是被发送到函数中,而是在函数完成后被发送。断点可能很有用,但它们有一个问题。如果您只希望在特定条件下调试函数,那么在其中放置断点将导致函数命中,即使在您不关心的情况下也是如此。因此,如果函数运行频繁,那么你必须继续10-30次才能找到你真正关心的部分。条件断点可能有效,但遗憾的是不受支持。XDebug中确实没有条件断点,但解决这个问题并不困难。只需执行
if(condition){do_some_king_of_noop_here();}
并将断点放在noopIn 2019.2.2中的设置>语言与框架>PHP>调试>步骤过滤器中