缺少细节时如何调试

时间:2011-01-23 09:23:41

标签: php debugging zend-framework doctrine-orm

我收到此错误

Fatal error: Uncaught exception 'Doctrine\ORM\EntityNotFoundException' with message 'Entity was not found.' in D:\ResourceLibrary\Frameworks\PHPFrameworks\Doctrine\ORM\UnitOfWork.php on line 1382

Doctrine\ORM\EntityNotFoundException: Entity was not found. in D:\ResourceLibrary\Frameworks\PHPFrameworks\Doctrine\ORM\UnitOfWork.php on line 1382

Call Stack:
   16.4461     329328   1. {main}() D:\Websites\Tickle\public\index.php:0
   20.4544    1417216   2. Zend_Application->run() D:\Websites\Tickle\public\index.php:26
   20.4544    1417216   3. Zend_Application_Bootstrap_Bootstrap->run() D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Application.php:366
   20.4546    1417272   4. Zend_Controller_Front->dispatch(???, ???) D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Application\Bootstrap\Bootstrap.php:97

从堆栈跟踪中,主要显示在框架类中的文件,而不是我的代码中最可能出现的错误。如何找到我的代码中最后一次触发错误的位置?我尝试使用Netbeans + XDebug,但这是一个很长的步骤,很难看到我的代码在哪里触发错误。你会如何推荐我开始?

我目前正在尝试使用Screenr记录我的步骤,所以我可以追踪最后1或2分钟b4错误......

似乎它似乎运行我的控制器&布局好,当我把die('ok ...');放在IndexController :: indexAction&在layout.phtml的末尾。没关系。那么什么呢?

1 个答案:

答案 0 :(得分:3)

在Netbeans中,在该文件和行中设置一个断点,在第1382行设置UnitOfWork.php。然后运行调试会话,重新创建触发错误的请求,当它到达您的断点时,您可以看到它是如何通过调用堆栈,以及传递的变量。这应该让你开始调查出了什么问题。