Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的简单调试方法_Php_Magento - Fatal编程技术网

PHP的简单调试方法

PHP的简单调试方法,php,magento,Php,Magento,我想调试PHP代码,看看在一系列集成中正在处理的数据发生了什么 调试这个.php文件(不使用复杂功能Magento/ZendDesk/Plugins环境设置)的最简单方法是什么? 我想象的是: 在输出.log文件的代码中设置调试点 设置可以在Chrome开发工具中看到的警报 谢谢输出值 当您需要一种简单的方法来调试程序而没有其他选项时,通常可以输出值。有时这意味着要进行var_转储或记录一系列事件 在程序中有调试日志记录是很有用的。在PHP中,可以使用各种记录器记录调试消息。当程序在调试模式

我想调试PHP代码,看看在一系列集成中正在处理的数据发生了什么

调试这个.php文件(不使用复杂功能Magento/ZendDesk/Plugins环境设置)的最简单方法是什么?

我想象的是:

  • 在输出.log文件的代码中设置调试点
  • 设置可以在Chrome开发工具中看到的警报

谢谢

输出值

当您需要一种简单的方法来调试程序而没有其他选项时,通常可以输出值。有时这意味着要进行var_转储或记录一系列事件

在程序中有调试日志记录是很有用的。在PHP中,可以使用各种记录器记录调试消息。当程序在调试模式下运行或日志级别设置为调试时,这些消息将在stdout、stderr或日志文件中结束。在“调试模式”下,日志会很快填满,所以您只需要暂时打开它。但我在这方面做得太超前了。让我备份到一些输出值的简单方法。 将变量转储到标准输出

var_dump函数是查看PHP程序中发生了什么的一种方法。它将把一个变量值转储到stdout。您还可以使用其他函数通过输出进行调试。以下是一些,以及它们将如何帮助您:

  • var_dump($var))将变量类型和值转储到标准输出
  • print\r($var)以人类可读的形式将变量值打印到stdout
  • get_defined_vars()获取所有已定义的变量,包括内置变量和自定义变量(打印以查看它们)
  • debug_zval_dump($var)转储变量及其引用计数。当有多个路径更新单个引用时,这非常有用
  • debug_print_backtrace()打印显示当前函数调用链的回溯
  • debug_backtrace()获取回溯。您可以打印\u r,将其记录到文件中,或将其异步发送到日志端点
下面是练习这些有用调试函数的示例代码:

<?php
$myVar = "hello world!";

var_dump($myVar);
print_r($myVar);

$allVars = get_defined_vars();
print_r($allVars);
debug_zval_dump($allVars);

function sayHello($hello) {
    echo $hello;
    debug_print_backtrace();
}

sayHello($myVar);
?>

这些函数是调试PHP代码的快速方法。每个函数都有一个用途,可用于调试

  • 错误报告设置日志记录的级别。E_通知在开发过程中很有用,因为它会告诉您诸如未分配变量之类的缺陷
  • display_errors告诉PHP是否以及在何处显示错误消息
  • 只有在调试时才应使用“显示\u启动\u错误”
  • 日志错误和错误日志一起将错误发送到日志文件。在生产中执行此操作,而不是将其显示给最终用户
这篇文章更详细地阐述了这些设置,并提供了我在本节中所能提供的更多信息。但是,即使有最好的日志记录设置,您仍然需要监视错误

监控错误日志

记录几乎是给定的错误是一回事。记录错误时采取行动是另一回事。首先,您必须了解错误。除非你整天整夜都在圆木上盘旋,否则你不会知道什么时候发生了坏事

你能做的最好的事情就是为你处理一些关键的事情:

  • 日志聚合您希望在一个位置查看所有日志。如果您可以跨实例集中日志和度量,那就更好了!无论哪里发生麻烦,你都能发现
  • 警告:没有什么比自动化更好的了。如果你是程序员,你知道我的意思!如果可以的话,你会想要自动化几乎所有的东西。警报是一种在出现问题时自动向组电子邮件发送警报的方法(在连续性方面优于个人)。这可能是服务器问题或日志中的错误。它应该是可配置的,您应该可以控制配置
  • 日志中的跟踪什么是跟踪?它不仅仅是一个堆栈转储,可以让您看到发生错误时发生了什么。这也是跟踪性能的一种方法,性能通常是一个缺陷的标志或原因
  • 日志条目的重复数据消除当错误导致错误时,它可以很快填满日志。只需将成百上千个相同条目的日志进行梳理,就可以让您大开眼界。重复数据消除消除消除了痛苦
单步执行代码

现在我们将讨论通过单步执行代码进行调试。这是我们许多开发人员在看到“调试”时的想法。这是调试代码(删除导致错误的缺陷)的常用方法。对于web应用程序或网站,调试通常是双管齐下的

一旦收到记录错误的通知,我们可以根据需要进行调试。日志中有足够的细节,这应该很容易。我们甚至可能不需要使用调试器。通常情况下,使用的越少越好。但如果你这样做了,下面是如何解决的

PHP调试工具

您可以使用多种调试工具之一来调试PHP,以附加调试器客户端。PhpStorm与调试实用程序一起工作,如和

调试服务器的设置是相同的,但每个客户端(IDE或CLI)的设置略有不同。请参见,调试服务器(Zend扩展)打开一个端口,客户端通过该端口与服务器通信。这只是配置和安装正确组件的问题


希望这能有所帮助。

Chrome开发工具(以及一般的浏览器开发工具)用于客户端编码,而不是服务器端(除非涉及AJAX)。但是对于这个QT已经有很多资源了。重点是我不想设置所有的调试环境,只想了解正在发生的事情。这可以通过将输出发送到前端来实现,对吗?这个答案正是我所需要的。我还在决定哪一个是最好的选择,