使用 Xdebug 的捆绑调试客户端,如何在单步执行页面时设置局部变量和全局变量的示例

using Xdebug's bundled debugclient, example of how to set both local and global variables while stepping through a page

我正在使用 Centos 7.6 和本地安装的 apache httpd.service。我已经安装了 xdebug v2.9.1 并通过一个简单的 phpInfo() 测试页面验证了它的配置。

当我在本地浏览器中通过本地主机引用加载页面时,我可以启动 'debugclient' 和 step_into、step_over、状态和各种其他 xdebug 协议命令。

<?php
  $a = 0;
  echo "a= " . $a . PHP_EOL;
  $a += 1;
  echo "a= " . $a . PHP_EOL;
  $a += 1;
  echo "a= " . $a . PHP_EOL;
  $a += 1;
  echo "a= " . $a . PHP_EOL;
  echo "Done" . PHP_EOL;

有消息的人可以给我提供一个 set/create 变量的命令示例,并从 debugclient 命令行更改它的值吗?具体来说,在我的示例文件中:如何修改“$a”的值,以便更改通过 echo 语句报告的值?

是的。我知道除了 'debugclient' 之外还有其他调试器,但我想了解 IDE 和网站主机之间的通信协议,因为它特别适用于 Xdebug 和 DBGP 协议;特别是因为提供的 Xdebug 文档没有提供在 https://xdebug.org/docs/dbgp

处使用 'eval'、'expr' 和 'exec' 的示例

我尝试创建标签 'debugclient' 和 'DBGP Protocol' 但显然没有足够的 'reputation' 来创建标签。

你应该使用property_set -i 45 -n $a -- base64encodedvalue

base64encodedvalue 应该是您要设置的值,使用 base64 编码。您可以使用 php -r 'echo base64_encode("42");' 创建该值,因此完整示例变为:

property_set -i 45 -n $a -- NDI=