Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

PHP отладчик XDebug - [Более одного отладчика]

$
0
0

PHP отладчик XDebug

Подключение и настройка

nano ./xdebug.ini

zend_extension=xdebug.so

[debug]
xdebug.auto_trace=0
xdebug.collect_includes=1
xdebug.collect_params=1
xdebug.collect_return=0
;xdebug.default_enable=1
xdebug.extended_info=1
xdebug.show_local_vars=1
xdebug.show_mem_delta=1
xdebug.max_nesting_level=100

; trace
xdebug.trace_format=0
xdebug.trace_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-trace"
xdebug.trace_options=0
xdebug.trace_output_name=timestamp

; debugger settings
xdebug.remote_autostart=0; 1 - Не требует XDEBUG_SESSION = xdebug в параметрах или куках, 0 - требует
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1; - отладка на локальной машине
xdebug.remote_host=192.168.1.6; - отладка на удаленной машине
xdebug.remote_mode=req
;xdebug.remote_mode = JIT
xdebug.remote_port=9000
xdebug.remote_log="/var/log/php5-fpm/php-fpm-xdebug-remote"
xdebug.idekey=xdebug

; profiler settings
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-profiler"
xdebug.profiler_output_name=profile.out

; Request
;xdebug.dump.GET=*
;xdebug.dump.REQUEST =*
;xdebug.dump.SERVER=HTTP_HOST, SERVER_NAME

Web XDebug

XDEBUG_SESSION_START=xdebug
XDEBUG_SESSION=xdebug

Console XDebug

$ exportPHP_IDE_CONFIG="serverName=www.host-name.ztc"&&exportXDEBUG_CONFIG="remote_host=192.168.1.6 idekey=xdebug"&& php7.0 ./yii

Где:

  • PHP_IDE_CONFIG - Наименование сервера из "Settings / Preferences | Languages & Frameworks | PHP | Servers"
    • Так-же желательно установить маппирование путей (локальных и на удаленном сервере)
  • XDEBUG_CONFIG
    • remote_host - IP Хоста, производящего отладку
    • idekey - Ключ, устанавливаемый в списке серверов "Settings / Preferences | Languages & Frameworks | PHP | Servers", "Ide key(session id)"

Хелпер для более одного отладчика

Если на сервере стоит более одного отладчика и в консоли по умолчанию, те в php.ini найденой по php -i, стоит другой отладчик в параметре zend_extension.

nano ~./.bashsrc

function phpx(){
export PHP_INI_SCAN_DIR=/etc/php5/cli-xdebug/conf.d && php -c /etc/php5/cli-xdebug/php.ini -q "$@";
}

и далее вызываем наш скрипт

phpx sample.php

Мульти соеденения

  • apt-get install php5-xdebug
  • cd /opt
  • mkdir pydbgpproxy
  • cd pydbgpproxy
  • wget https://github.com/Mirocow/pydbgpproxy/archive/master.zip ./ - Установить прокси (Python Remote Debugging Client)
  • unzip master.zip ./
  • echo "export PYTHONPATH=\${PYTHONPATH}:/opt/bin/pydbgpproxy/pythonlib" » ~/.bashrc
  • ln -s $(pwd)/pydbgpproxy /usr/local/bin/pydbgpproxy
  • запустить /usr/loca/bin/pydbgpproxy -i 0.0.0.0:9001 -d 9000
  • Установить уникальный ключ для хоста.

  • Зарегистрировать на сервере

nano ./xdebug.ini

; configuration for php xdebug module
; priority=20
zend_extension=xdebug.so

[debug]
xdebug.auto_trace=0
xdebug.collect_includes=1
xdebug.collect_params=1
xdebug.collect_return=0
;xdebug.default_enable=1
xdebug.extended_info=1
xdebug.show_local_vars=1
xdebug.show_mem_delta=1
xdebug.max_nesting_level=100

; trace
xdebug.trace_format=0
xdebug.trace_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-trace"
xdebug.trace_options=0
xdebug.trace_output_name=timestamp

; debugger settings
xdebug.remote_autostart=0; 1 - Не требует XDEBUG_SESSION = xdebug в параметрах или куках, 0 - требует
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
;xdebug.remote_mode = JIT
xdebug.remote_port=9000
xdebug.remote_log="/var/log/php5-fpm/php-fpm-xdebug-remote"

; profiler settings
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-profiler"
xdebug.profiler_output_name=profile.out

Скрипт загрузки

nano /etc/init.d/pydbgpproxy.sh

#! /bin/sh
### BEGIN INIT INFO
# Provides:          Python Remote Debugging Client
# Required-Start:    $remote_fs dbus udev
# Required-Stop:     $remote_fs dbus udev
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Python Remote Debugging Client
# Description:       Python Remote Debugging Client.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Python Remote Debugging Client"
NAME="pydbgpproxy"
DAEMON=/usr/local/bin/pydbgpproxy
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/pydbgpproxy.sh
DAEMON_OPTS="-i 0.0.0.0:9001 -d 9000"
DAEMON_LOG=/var/log/$NAME.log


# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

test -f /etc/default/pydbgpproxy && . /etc/default/pydbgpproxy

#
#       Function that starts the daemon/service.
# --background
d_start() {
        start-stop-daemon --oknodo --make-pidfile --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $DAEMON_OPTS 1>$DAEMON_LOG 2>&1 &
        return "$?"
}

#
#       Function that stops the daemon/service.
#
d_stop() {
        start-stop-daemon --stop --quiet --pidfile $PIDFILE
        return "$?"
}


case "$1" in
  start)
        if [ -f $PIDFILE ]; then
                echo "$NAME is running."
                exit 0
        fi
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already started"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already stopped"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        if [ -f $PIDFILE ]; then
                rm $PIDFILE
        fi
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0
# chmod 775 /etc/init.d/pydbgpproxy.sh
# chkconfig pydbgpproxy.sh on

Запуск в коде

ini_set('xdebug.profiler_enable', 1);
xdebug_enable();
xdebug_disable();
<?php
    xdebug_start_code_coverage();

    function a($a) {
        echo $a * 2.5;
    }

    function b($count) {
        for ($i = 0; $i < $count; $i++) {
            a($i + 0.17);
        }
    }

    b(6);
    b(10);

    var_dump(xdebug_get_code_coverage());
?>

Подробнее


Viewing all articles
Browse latest Browse all 1318

Trending Articles


Vimeo 11.6.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


Vimeo 10.7.1 by Vimeo.com, Inc.


Sapos para colorear


Long Distance Relationship Tagalog Love Quotes


Knock knock jokes


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


UPDATE SC IDOL: TWO BECOME ONE


FORTUITOUS EVENT


Vimeo 11.5.1 by Vimeo.com, Inc.


Vimeo 11.8.1 by Vimeo.com, Inc.


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Patama Quotes – Tanga love tagalog quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


KASAMBAHAY BILL IN THE HOUSE


Pokemon para colorear