PHP调试 - 在哪里设置断点?如何验证?

时间:2008-12-05 13:06:46

标签: php debugging zend-framework breakpoints zend-debugger

所以我最近刚刚使用dumpprint_recho进行临时调试,采用了一些更为复杂的方法,而且我正在努力。

我使用Zend Framework,Aptana和Zend Debugger。

此时我正在尝试调试一个自定义控制器,无论我尝试什么,我都没有达到我理解的断点,因为中间有身份验证并使用菜单。

问题

  1. 如何让我的应用程序在身份验证时中断,在浏览器中登录,导航到某个uri然后继续调试?
  2. 使用MVC在Zend Framework中设置断点的好地方是什么?

4 个答案:

答案 0 :(得分:1)

设置常量会不会更容易,例如:

define('MODE_DEBUG', 1);

然后检查身份验证过程:

if($obj->myLoginMethod() || constant('MODE_DEBUG') == 1){

}

没有人能够注入那个常量,最糟糕的事情就是你最终在我的错误中离开调试模式......

您可以在定义之前进行检查:

define('MODE_DEBUG', (false !== strpos($_SERVER['HTTP_HOST'], 'dev.mysite.com') ? 1 : 0));

答案 1 :(得分:1)

您想在请求中途更改当前用户的身份验证详细信息吗?

我不认为这是可能的。 Zend Debugger几乎是一个只读工具。即使它是,你假设你正在使用的任何框架都可以处理这个问题。这意味着它必须不断尝试将其内部状态与不断变化的输入数据同步。

我认为不应该问我们如何解决这个具体问题,而应该告诉我们为什么需要更改身份验证。听起来你在调试器中启动了一个脚本,因为你没有用户会话而失败了。

Zend Debugger有一个浏览器工具栏(http://files.zend.com/help/Zend-Studio-Eclipse-Help/zend_debugger_toolbar.htm),允许您为当前页面启动调试器;调试器将拥有浏览器发送的所有信息:cookie,发布数据等。甚至还有一个“调试下一页”设置可以帮助您调试POST表单。听起来这就是你想要的。

答案 2 :(得分:1)

也许您只需要重新考虑转储解决方案(我喜欢使用断点的想法,但在经历过像我们经验丰富的打嗝之后回过头来使用Zend Studio)。为了调试我的应用程序,我使用Zend_Log和Zend_Log的firebug writer。 firebug将日志输出到firebug(注意,你必须安装firefox的firephp扩展名)。将记录器存储在注册表中,您可以完成大量调试,而不会使用丑陋的转储来破坏您的视图。

答案 3 :(得分:0)

好的,所以我更多地使用zend调试器。 (你的问题激起了老恶魔)我最终想出了“适当”的调试方式。要在登录后回答您的初始问题以进行调试,我会说安装firefox或IE的zend工具栏。在Debug菜单项的右侧有一个带有一些选项的下拉列表。其中一个选项是“下一页”。因此,您可以转到登录屏幕,选择“下一页”,然后输入您的凭据并提交,NEXT页面就是调试的内容。