RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1026551
Accepted
KAGG Design
KAGG Design
Asked:2020-09-21 17:07:44 +0000 UTC2020-09-21 17:07:44 +0000 UTC 2020-09-21 17:07:44 +0000 UTC

如何将 xDebug 控制按钮添加到 PhpStorm?

  • 772

我想将自己的控制按钮添加到 PhpStorm 工具栏以快速切换调试模式。

php
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    KAGG Design
    2020-09-21T17:07:44Z2020-09-21T17:07:44Z

    xDebug 是一个很棒的调试器,但它会显着降低网站速度。在开发过程中,最好仅在您真正需要时启用 xDebug。让我们看看如何在 Laragon 开发环境中启用、禁用 xDebug 和设置分析模式。我们还将看到如何将这些操作按钮添加到 phpStorm 工具栏。

    这就是最终结果的样子(右侧有 4 个极端按钮)。

    在此处输入图像描述

    首先,让我们创建一个批处理文件来切换 xDebug。我们假设我们正在运行安装了 Linux Bash shell 的 Windows 10。让我们在位于 Windows PATH 的某个文件夹中创建两个文件:xdebug.bat 和 xdebug.sh。

    xdebug.bat:

    @echo off
    bash xdebug.sh %*
    

    xdebug.sh:

    #!/bin/bash
    #set -v
    
    ini_file="/mnt/c/laragon/bin/php/php-7.2.10/php.ini"
    
    if [ -z $1 ]
    then
        if grep -q '^extension=blackfire' "$ini_file"
        then
            echo 'xdebug is BLACKFIRE'
            exit 0
        fi
        if grep -q '\;zend_extension' "$ini_file"
        then
            echo 'xdebug is OFF'
            exit 0
        fi
        if grep -q 'xdebug.profiler_enable=0' "$ini_file"
        then
            echo 'xdebug is ON'
            exit 0
        else
            echo 'xdebug is PROFILER'
            exit 0
        fi
    fi
    
    if [ 'on' = $1 ]
    then
        sed -i s/^\;zend_extension=php_xdebug/zend_extension=php_xdebug/g $ini_file
        sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
        sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
        pid=$(pgrep blackfire-agent)
        if [ ! -z $pid ]
        then
            kill $pid
        fi
        /mnt/c/laragon/laragon.exe reload apache
        exit 0
    fi
    
    if [ 'profiler' = $1 ]
    then
        sed -i s/^\;zend_extension=php_xdebug/zend_extension=php_xdebug/g $ini_file
        sed -i s/^xdebug.profiler_enable=0/xdebug.profiler_enable=1/g $ini_file
        sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
        pid=$(pgrep blackfire-agent)
        if [ ! -z $pid ]
        then
            kill $pid
        fi
        /mnt/c/laragon/laragon.exe reload apache
        exit 0
    fi
    
    if [ 'off' = $1 ]
    then
        sed -i s/^zend_extension=php_xdebug/\;zend_extension=php_xdebug/g $ini_file
        sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
        sed -i s/^extension=blackfire/\;extension=blackfire/g $ini_file
        pid=$(pgrep blackfire-agent)
        if [ ! -z $pid ]
        then
            kill $pid
        fi
        /mnt/c/laragon/laragon.exe reload apache
        exit 0
    fi
    
    if [ 'blackfire' = $1 ]
    then
        sed -i s/^zend_extension=php_xdebug/\;zend_extension=php_xdebug/g $ini_file
        sed -i s/^xdebug.profiler_enable=1/xdebug.profiler_enable=0/g $ini_file
        sed -i s/^\;extension=blackfire/extension=blackfire/g $ini_file
        /mnt/c/laragon/laragon.exe reload apache
        pid=$(pgrep blackfire-agent)
        if [ ! -z $pid ]
        then
            kill $pid
        fi
        exec /mnt/c/Programs/Blackfire/blackfire-agent.exe
        exit 0
    fi
    
    echo 'argument can be "on", "off", "profiler" or "blackfire" only'
    exit 1
    

    用法:

    • xdebug (无参数) - 显示当前状态
    • xdebug on - 启用 xDebug
    • xdebug off - 关闭 xDebug
    • xdebug 探查器 - 使用探查器启用 xDebug
    • xdebug blackfire - 启用 Blackfire 分析器(当然,与 xDebug 无关,但我更喜欢将它包含在同一个脚本中)

    xdebug.bat 调用 xdebug.sh 来执行以下操作:

    • 注释掉/取消注释 php.ini 中必要的行以切换 xDebug
    • 在 laragon 中重新加载 apache 网络服务器
    • 如果需要,启动/停止 Blackfire 分析代理

    php.ini(其位置在 xdebug.sh 的第一行中指定)应包含如下行:

    [blackfire]
    ;extension=blackfire
    ; On Windows use the following configuration:
    ; extension=php_blackfire.dll
    
    
    ; Sets the socket where the agent is listening.
    ; Possible value can be a unix socket or a TCP address.
    ; Defaults to unix:///var/run/blackfire/agent.sock on Linux,
    ; unix:///usr/local/var/run/blackfire-agent.sock on MacOSX,
    ; and to tcp://127.0.0.1:8307 on Windows.
    ;blackfire.agent_socket = unix:///var/run/blackfire/agent.sock
    blackfire.agent_socket = tcp://127.0.0.1:8308
    
    blackfire.agent_timeout = 0.25
    
    ; Log verbosity level (4: debug, 3: info, 2: warning, 1: error)
    blackfire.log_level = 4
    
    ; Log file (STDERR by default)
    blackfire.log_file = /tmp/blackfire.log
    
    ; Sets fine-grained configuration for Probe.
    ; This should be left blank in most cases. For most installs,
    ; the server credentials should only be set in the agent.
    blackfire.server_id = your-server-id
    
    ; Sets fine-grained configuration for Probe.
    ; This should be left blank in most cases. For most installs,
    ; the server credentials should only be set in the agent.
    blackfire.server_token = your-token
    
    [Xdebug]
    ;zend_extension=php_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll
    
    xdebug.remote_enable=1
    xdebug.remote_connect_back=On
    xdebug.remote_port="9001"
    xdebug.profiler_enable=0
    xdebug.profiler_output_dir = c:\laragon\tmp
    xdebug.profiler_output_name = %R_%t_cachegrind.out
    xdebug.show_mem_delta = 0
    

    如果您不需要此分析器,则可以省略 [blackfire] 部分。

    从现在开始,您可以在 PhpStorm 终端中使用 xdebug 命令。但让我们更进一步。我们可以将这些命令添加到 PhpStorm 中的外部工具中。打开设置(Ctrl+Alt+S),找到工具>外部工具,添加一些工具,如下图:

    在此处输入图像描述

    保存您的设置。现在,新命令在 PhpStorm 工具 > 外部工具菜单中可用,是时候向 PhpStorm 工具栏添加按钮了。打开设置(Ctrl+Alt+S),找到Appearance & Behavior > Menus and Toolbars,添加一些按钮,如下图:

    在此处输入图像描述

    您还可以添加按钮图标(.png,16 x 16)。我的图标在这里:

    在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

    就这样。只需单击相应的按钮即可在 PhpStorm 中轻松地在调试和分析之间切换。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5