gpt4 book ai didi

php - 在自己的包中调试断点 : Symfony 2. 7 + PHPStorm 9 + Xdebug 2.2

转载 作者:行者123 更新时间:2023-12-04 18:02:14 25 4
gpt4 key购买 nike

这是我第一次尝试在 PHPStorm 9.0 中使用 xdebug 调试 Symfony 2.7 安装。 Apache 在安装了 PHPStorm 的同一系统上运行。基本设置有效,因此 PHPStorm 与 xdebug 连接,在第一行中断并在我按 F9 时在下一个断点停止。我的问题是:调试器不会在我自己的 Symfony2 包内停止。似乎 Symfony2 结构“混淆”了 PHPStorm。调试器仅在一些主要的 symfony2 文件中停止,例如 app.php 或 AppKernel.php。

让我们从我的配置开始:

xdebug.conf

zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.remote_log=/var/log/xdebug-remote.log
xdebug.remote_autostart=0
xdebug.var_display_max_children=512
xdebug.var_display_max_data=32000
xdebug.var_display_max_depth=8

xdebug 远程日志中的一切看起来都很好,我找到了我在 PHPStorm 中设置的所有断点。我也可以使用我在 xdebug 日志中看到的 file://路径用 VIM 打开文件。

我的结论:不存在映射问题吧?为了真正节省,我在 PHPStorm 设置中映射了所有文件夹。还是不行。。。

symfony/app/AppKernel.php 中的断点有效:

<- breakpoint_set -i 11 -t line -f file:///var/www/myDomain.de/symfony/app/AppKernel.php -n 23
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="11" id="110380033"></response>

SmartphoneController.php 中自己的包中的断点不起作用(PHPStorm 调试器不会停止):

<- breakpoint_set -i 12 -t line -f file:///var/www/myDomain.de/symfony/src/Pce/Bundle/BackendBundle/Controller/SmartphoneController.php -n 32
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="12" id="110380034"></response>

为了确保代码行被执行,我在全局 $_SERVER 变量中保存了一些测试字符串:

$_SERVER['TEST_FOR_DEBUG'] = 'Am I executed? YES!';
var_dump($_SERVER['TEST_FOR_DEBUG']);

我的结论:xdebug - PHPStorm 设置通常有效(调试器在 AppKernel.php 中停止)。

好吧,也许 Symfonys 缓存有问题,PHPStorm 在引用正确文件时遇到问题。我发现这些文章禁用 Symfonys 缓存以“帮助 IDE”:

基于这些文章,我之前调用了 Dev-Environment (app_dev.php) 并禁用了缓存:

$loader = require_once __DIR__.'/../app/autoload.php';
Debug::enable();
require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('dev', true);
// CHANGE: Comment the next line to disable cache loading
//$kernel->loadClassCache();
$request = Request::createFromGlobals();

运气不好!有人知道我能做什么吗?

最佳答案

感谢 LazyOne!我在我的 Controller 中选择了另一行,其中设置了一个简单的变量。我花了很多时间试图理解为什么调试器不会在处理大量 Doctrine 对象的代码部分停止。可能对于 PHPStorm 来说太复杂了。

阅读我的问题的评论:

  • 试试 xdebug_break();
  • 在“简单”代码行上设置断点

关于php - 在自己的包中调试断点 : Symfony 2. 7 + PHPStorm 9 + Xdebug 2.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33198677/

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