codecamp

IntelliJ IDEA:在实时(JIT)模式下进行调试

在实时模式下进行调试

此功能仅在Ultimate版本中受支持。
以下内容仅在安装并启用PHP插件时有效!

IntelliJ IDEA支持在实时(JIT)模式下使用Xdebug,因此它不会一直附加到您的代码,而是仅在发生错误或抛出异常时才连接到IntelliJ IDEA。Xdebug操作模式通过xdebug.remote_mode设置切换,默认情况下设置为req。该模式可用于调试命令行脚本和Web服务器调试。

配置Xdebug以在实时模式下使用

根据您是要调试命令行脚本还是使用Web服务器,请使用以下方案之一。

命令行脚本

要调试命令行脚本,请将自定义-dxdebug.remote_mode=jit指令指定为其他配置选项:

  1. 按下Ctrl+Alt+S或选择:文件|设置(对于Windows和Linux),或IntelliJ IDEA|首选项(对于macOS)以打开“设置/首选项对话框”,然后单击“语言和框架”下的PHP。
  2. 从PHP可执行文件下拉列表中,选择相关的PHP解释器,然后单击它旁边的 browseButton
  3. 在打开的“CLI解释器”对话框中,单击“附加”区域中“配置选项”文本框旁边的 browseButton
  4. 在打开的“配置选项”对话框中,单击 图标一般添加svg以添加新条目,然后在“配置指令”字段键入-dxdebug.remote_mode并且在“值”字段键入jit。
    单击“确定”后,将返回“CLI解释器”对话框,其中,“配置选项”文本框会显示-dxdebug.remote_mode=jit。

Web服务器调试

  1. 在主菜单上,选择:运行|Web服务器调试验证。
  2. 在打开的“Web服务器调试验证”对话框中,选择要验证调试器的Web服务器。
    • 选择“本地Web服务器”或“共享文件夹”以检查与本地Web服务器关联的调试程序。
      • 创建验证脚本的路径:在此字段中,指定将在其中创建验证脚本的服务器文档根目录下的文件夹的绝对路径。对于就地类型的Web服务器,该文件夹位于项目根目录下。
        该文件夹必须可通过http访问。
      • 验证脚本的URL:在此文本框中,键入将在其中创建验证脚本的文件夹的URL地址。如果项目根目录映射到可通过http访问的文件夹,则可以指定项目根目录或其下的任何其他文件夹。
    • 选择“远程Web服务器” 以检查与远程服务器关联的调试器。
      • 创建验证脚本的路径:在此字段中,指定将在其中创建验证脚本的服务器文档根目录下的文件夹的绝对路径。该文件夹必须可通过http访问。
      • 部署服务器: 在此字段中,指定“本地服务器”或“远程服务器”类型的服务器访问配置以访问目标环境。
        从列表中选择配置,或单击“部署”对话框中的“浏览( browseButton)”。
  3. 单击“验证”以使IntelliJ IDEA创建验证脚本,将其部署到目标远程环境,然后在那里运行。
  4. 打开报告为已加载并与Xdebug关联的php.ini文件。
  5. 在php.ini文件中,找到该[XDebug]部分,并将xdebug.remote_mode 默认值req更改为jit。

调试会话

设置断点并启动调试会话,如“启动调试会话”或“使用PHP Web页面调试配置调试”中所述。

Xdebug会在以下两种情况下连接到IntelliJ IDEA:

  • 发生错误时。在这种情况下,Xdebug在错误条件之后立即停在行上。原因是IntelliJ IDEA首先必须在它知道出错之前运行错误的代码。
  • 抛出异常时。如果处理异常,Xdebug会在catch块的第一行(如果有)或在finally块处中断。
IntelliJ IDEA:调试PHP HTTP请求
IntelliJ IDEA:使用PHP异常断点进行调试
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }