30
Essential Debugging PHP Debugging techniques, tips & tricks Kaloyan Raev Zend / Rogue Wave

Essential debugging php debugging techniques, tips & tricks

Embed Size (px)

Citation preview

Page 1: Essential debugging php debugging techniques, tips & tricks

Essential DebuggingPHP Debugging techniques, tips & tricks

Kaloyan RaevZend / Rogue Wave

Page 2: Essential debugging php debugging techniques, tips & tricks

$ whoamiZend Studio Team Lead

Eclipse Committer

Live in Sofia, Bulgaria

Skier

Page 3: Essential debugging php debugging techniques, tips & tricks

Why Debugging?

Because we make bugs

Because we want to fix them!

Page 4: Essential debugging php debugging techniques, tips & tricks

Debugging in PHP 101

echo $myvar;

var_dump ( $myvar );

die ( "Unexpected value in myvar: $myvar" );

error_reporting ( E_ALL );

Page 5: Essential debugging php debugging techniques, tips & tricks

Better Way?

Use a debugger!

Page 6: Essential debugging php debugging techniques, tips & tricks

Breakpoints

$left == 10

Page 7: Essential debugging php debugging techniques, tips & tricks

Stack Traces

Page 8: Essential debugging php debugging techniques, tips & tricks

Variables Overview

Page 9: Essential debugging php debugging techniques, tips & tricks

Fine Execution Control

Page 10: Essential debugging php debugging techniques, tips & tricks

Changes in Last Step

Page 11: Essential debugging php debugging techniques, tips & tricks

In-Editor Inspections

Shift + Ctrl + I

Page 12: Essential debugging php debugging techniques, tips & tricks

Watched Expressions

Page 13: Essential debugging php debugging techniques, tips & tricks

Multiple Sessions

Page 14: Essential debugging php debugging techniques, tips & tricks

PHP Debugger Engines

Xdebug

Zend Debugger

phpdbg

Page 15: Essential debugging php debugging techniques, tips & tricks

Xdebug Zend Debugger phpdbg

Built-in PHP ✅

Communication protocol DBGpXML-based

binaryPHP-specific

ownXML-based

Available in PHP 7 (as of today) ✅

IDE Support ✅ ✅

Remote Debugging ✅ ✅ ✅

Profiling ✅ ✅

Page 16: Essential debugging php debugging techniques, tips & tricks

The Easiest Way for Setting Up PHP with Debugger

Out of the box!

v8.5 provides both Xdebug and Zend Debugger

Page 17: Essential debugging php debugging techniques, tips & tricks
Page 18: Essential debugging php debugging techniques, tips & tricks

Docker Containers

tommylau/xdebug - Apache + PHP + Xdebug

Tutorial: Debugging PHP Web Apps in a Docker Container

Page 19: Essential debugging php debugging techniques, tips & tricks

Just CLI Scripts

Zend Studio bundles PHP binaries with Zend Debugger included

Page 20: Essential debugging php debugging techniques, tips & tricks

No IDEs Pleasephpdbg is for you

Built-in PHP since 5.6 as SAPI module

CLI user interface

Page 22: Essential debugging php debugging techniques, tips & tricks

Browser Toolbars

Xdebug

Zend Debugger

Browser Toolbar

Debug Engine

IDE

1. Request with debug cookie

1. Request broadcast port

2. Ope

n deb

ug se

ssion

4. Ope

n deb

ug se

ssion

2. Response with debug info

3. Request

Page 25: Essential debugging php debugging techniques, tips & tricks

Z-Ray

Page 26: Essential debugging php debugging techniques, tips & tricks

Z-Ray Live!

Page 27: Essential debugging php debugging techniques, tips & tricks
Page 28: Essential debugging php debugging techniques, tips & tricks

Remote DebuggingIntranet

Direct Internet Connection

Firewall / Proxy

➢ SSH Tunneling - works for both Xdebug and Zend Debugger

➢ Zend Debugger Tunneling - easier to setup, does not require Zend Server

Page 29: Essential debugging php debugging techniques, tips & tricks

Debug Mode

Every request to server triggers a new debug session in IDE

Useful for debugging requests from mobile apps

Available only for Zend Debugger in Zend Server

Page 30: Essential debugging php debugging techniques, tips & tricks

Thank you!

Rate this talk: https://joind.in/15612

Follow me: @kaloyanraev