我们如何让 XDebug VSCode 忽略已知的代码问题?
How do we get VSCode with XDebug to ignore known code issues?
环境:Visual Studio 代码,PHP 7.4,XDebug,Flywheel 本地的 WordPress 站点,全部在 Windows 10 上。这一切正常。问题是 WordPress 中总是出现一个未处理的小异常,在正常处理中会被忽略。但是异常报告使我的插件调试变得混乱。所以我想消除一小部分 WP 核心代码的 XDebug 报告。
在 index.php 中,我添加了以下无效的内容:
xdebug_set_filter(
XDEBUG_FILTER_STACK,
XDEBUG_PATH_INCLUDE,
[__DIR__ . "/wp-content/plugins/myplugin/"]
);
我在wp-load.php中添加了类似的代码,也没有效果:
$path=__DIR__ . "\wp-content\plugins\myplugin";
xdebug_set_filter(
XDEBUG_FILTER_STACK,
XDEBUG_PATH_INCLUDE,
[$path]
);
$path 正确。
在 WP 核心代码 (wp-db.php) 中,我将异常抛出代码括起来:
xdebug_disable(); ... xdebug_enable();
令人困惑的一件事是 VS Code 智能感知无法识别 xdebug 函数,但仍使用 xdebug_break();确实会导致 XDebug 中断。
- 问题 1:我们如何才能 VSCode/PHP/Intelephense 识别 XDebug 函数?
是的,UI 显示错误“调用未定义的函数 xdebug_disable()”。因此,除了获得 IDE 支持外:
- 问题 2:如何让 VSCode project/workspace 识别 php_xdebug.dll 特征?
(更具体地说,对于此环境,这是“C:\Users\me\AppData\Roaming\Local\lightning-services\php-7.4.1+16\bin\win64\ext\php_xdebug-3.0.4-7.4-vc15-nts-x86_64.dll”)
对于这个特定的挑战:
- 问题 3:获取 XDebug 以避免特定代码块的正确技术是什么?
我们用括号 enable/disable 吗?
我们是否使用 xdebug_set_filter
仅关注感兴趣的命名空间或文件夹?
我们会用这样的括号吗? :
xdebug_start_error_collection();
...
xdebug_stop_error_collection();
xdebug_get_collected_errors(true);
最后,因为我想了解它是如何工作的,而不仅仅是获得这个特定挑战的答案:
- 问题 4:除了 https://xdebug.org/docs/develop 提供的出色语法文档之外,我们在哪里可以找到有关如何使用这些函数解决实际问题的文档?
谢谢。
你的大部分问题似乎来自对 Xdebug 2 的了解,但使用 Xdebug 3,它有一组更改的配置设置和功能,这些设置和功能记录在 upgrade guide.
Question 1: Call to undefined function xdebug_disable()
这是因为Xdebug 3已经没有这个功能了,见:https://xdebug.org/docs/upgrade_guide#Changes-to-Functions
Question 2: What do we do to get a VSCode project/workspace to recognize the php_xdebug.dll features?
它已经这样做了,因为 xdebug_break()
适合您。你只是在使用旧版本的功能。
Question 3: What is the proper technique to get XDebug to avoid a specific code block?
Xdebug 无法进行调试。它通常内置于 IDE 中。例如,PhpStorm 有一种排除目录的方法。我对 VS Code 插件不是 100% 满意,但他们最近进行了更改,默认情况下不启用 default exception filters,这也可以解决您的问题。
Do we bracket with enable/disable?
没有。该函数不再存在,但它的唯一作用是显示或不显示 Xdebug 的橙色错误。它对调试没有任何影响。
Do we use xdebug_set_filter to focus on just the namespace or folders of interest?
过滤器有两类,一类用于堆栈跟踪(XDEBUG_FILTER_STACK
),一类用于代码覆盖率(XDEBUG_FILTER_COVERAGE
)。还有 none 用于调试,我已经创建了一个 feature request 来支持它(来自 Xdebug 3.1)。
Do we bracket with something like this? :
xdebug_start_error_collection();
...
xdebug_stop_error_collection();
xdebug_get_collected_errors(true);
那只是为了收集错误。它不会阻止 错误的发生。
Question 4: Where can we find documentation about how to use these functions to solve actual problems, outside of the great syntax docs provided at https://xdebug.org/docs/develop ?
我将从 upgrade guide 开始,并查看最近重写的 step 调试器文档。我最近还开始制作有关文档特定内容的视频,其中一些是关于 步骤调试 ,还有一个 完整列表 。
我还在添加这些视频,也会添加非视频内容。
如果您想对这些视频提出具体想法,请在 Xdebug 的 bug tracker.
中发送文档问题
环境:Visual Studio 代码,PHP 7.4,XDebug,Flywheel 本地的 WordPress 站点,全部在 Windows 10 上。这一切正常。问题是 WordPress 中总是出现一个未处理的小异常,在正常处理中会被忽略。但是异常报告使我的插件调试变得混乱。所以我想消除一小部分 WP 核心代码的 XDebug 报告。
在 index.php 中,我添加了以下无效的内容:
xdebug_set_filter(
XDEBUG_FILTER_STACK,
XDEBUG_PATH_INCLUDE,
[__DIR__ . "/wp-content/plugins/myplugin/"]
);
我在wp-load.php中添加了类似的代码,也没有效果:
$path=__DIR__ . "\wp-content\plugins\myplugin";
xdebug_set_filter(
XDEBUG_FILTER_STACK,
XDEBUG_PATH_INCLUDE,
[$path]
);
$path 正确。
在 WP 核心代码 (wp-db.php) 中,我将异常抛出代码括起来:
xdebug_disable(); ... xdebug_enable();
令人困惑的一件事是 VS Code 智能感知无法识别 xdebug 函数,但仍使用 xdebug_break();确实会导致 XDebug 中断。
- 问题 1:我们如何才能 VSCode/PHP/Intelephense 识别 XDebug 函数?
是的,UI 显示错误“调用未定义的函数 xdebug_disable()”。因此,除了获得 IDE 支持外:
- 问题 2:如何让 VSCode project/workspace 识别 php_xdebug.dll 特征?
(更具体地说,对于此环境,这是“C:\Users\me\AppData\Roaming\Local\lightning-services\php-7.4.1+16\bin\win64\ext\php_xdebug-3.0.4-7.4-vc15-nts-x86_64.dll”)
对于这个特定的挑战:
- 问题 3:获取 XDebug 以避免特定代码块的正确技术是什么?
我们用括号 enable/disable 吗?
我们是否使用 xdebug_set_filter
仅关注感兴趣的命名空间或文件夹?
我们会用这样的括号吗? :
xdebug_start_error_collection();
...
xdebug_stop_error_collection();
xdebug_get_collected_errors(true);
最后,因为我想了解它是如何工作的,而不仅仅是获得这个特定挑战的答案:
- 问题 4:除了 https://xdebug.org/docs/develop 提供的出色语法文档之外,我们在哪里可以找到有关如何使用这些函数解决实际问题的文档?
谢谢。
你的大部分问题似乎来自对 Xdebug 2 的了解,但使用 Xdebug 3,它有一组更改的配置设置和功能,这些设置和功能记录在 upgrade guide.
Question 1: Call to undefined function xdebug_disable()
这是因为Xdebug 3已经没有这个功能了,见:https://xdebug.org/docs/upgrade_guide#Changes-to-Functions
Question 2: What do we do to get a VSCode project/workspace to recognize the php_xdebug.dll features?
它已经这样做了,因为 xdebug_break()
适合您。你只是在使用旧版本的功能。
Question 3: What is the proper technique to get XDebug to avoid a specific code block?
Xdebug 无法进行调试。它通常内置于 IDE 中。例如,PhpStorm 有一种排除目录的方法。我对 VS Code 插件不是 100% 满意,但他们最近进行了更改,默认情况下不启用 default exception filters,这也可以解决您的问题。
Do we bracket with enable/disable?
没有。该函数不再存在,但它的唯一作用是显示或不显示 Xdebug 的橙色错误。它对调试没有任何影响。
Do we use xdebug_set_filter to focus on just the namespace or folders of interest?
过滤器有两类,一类用于堆栈跟踪(XDEBUG_FILTER_STACK
),一类用于代码覆盖率(XDEBUG_FILTER_COVERAGE
)。还有 none 用于调试,我已经创建了一个 feature request 来支持它(来自 Xdebug 3.1)。
Do we bracket with something like this? :
xdebug_start_error_collection(); ... xdebug_stop_error_collection(); xdebug_get_collected_errors(true);
那只是为了收集错误。它不会阻止 错误的发生。
Question 4: Where can we find documentation about how to use these functions to solve actual problems, outside of the great syntax docs provided at https://xdebug.org/docs/develop ?
我将从 upgrade guide 开始,并查看最近重写的 step 调试器文档。我最近还开始制作有关文档特定内容的视频,其中一些是关于 步骤调试 ,还有一个 完整列表 。
我还在添加这些视频,也会添加非视频内容。 如果您想对这些视频提出具体想法,请在 Xdebug 的 bug tracker.
中发送文档问题