Xdebug Your Code

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Xdebug Your Code as PDF for free.

More details

  • Words: 897
  • Pages: 41
XDebug Your Code Tips and Tricks for Writing Bug-Free High Impact Code

Brandon Savage, Applied Security, Inc Thursday, July 23, 2009

Who Am I? • PHP Developer for Applied Security in Reston, VA • Former lead developer for The Pickens Plan • Very involved local community member.

Thursday, July 23, 2009

What We’ll Discuss • What is Xdebug? • Stack Traces • Cool variable output • Superglobal display • Function traces • Profiling your code

Thursday, July 23, 2009

What Is Xdebug? Xdebug is an extension for PHP that helps improve your applications by providing lots of valuable debgging information.

Thursday, July 23, 2009

Xdebug offers three core components: 1. Stack and function traces in error messages. 2. Profiling information about the execution of PHP scripts. 3. Advanced variable output options.

Thursday, July 23, 2009

Xdebug For Debugging

Thursday, July 23, 2009

Xdebug provides lots of great tools for debugging your scripts. • Built-in stack traces with lots of information. • Improved var_dump() function.

Thursday, July 23, 2009

Typical PHP Stack Trace Thursday, July 23, 2009

Xdebug Enhanced Stack Trace Thursday, July 23, 2009

Xdebug offers lots of configuration options. • xdebug.collect_includes (on) - Collect and write the name of include files to the trace log. • xdebug.collect_params (off) - Collect the parameters passed to functions and write them to the logs.

Thursday, July 23, 2009

Xdebug offers lots of configuration options. • xdebug.collect_vars (off) - collect the variables in various scopes and write them to the logs. • xdebug.dump_globals (off) - dump the superglobal arrays into the stack trace logs. • 15 total options for configuration. (http://xdebug.com/docs/stack_trace) Thursday, July 23, 2009

Typical PHP var_dump() Thursday, July 23, 2009

var_dump() Viewing Source Thursday, July 23, 2009

Xdebug-enhanced var_dump() Thursday, July 23, 2009

var_dump Configuration Options

• Xdebug’s var_dump() overloads the built-in var_dump() function in PHP. This can be disabled with xdebug.overload_var_dump=0.

Thursday, July 23, 2009

var_dump Configuration Options • xdebug.var_display_max_children (128) Number of children var_dump will display (keys, properties, etc.) • xdebug.var_display_max_depth (3) How many levels deep Xdebug will display. You should always make this larger.

Thursday, July 23, 2009

3 Children vs 25 Children Thursday, July 23, 2009

Viewing Superglobals • Xdebug contains a built-in superglobal output function. • If you specify the superglobal using xdebug.dump.* (POST, GET, SESSION, etc.) this feature will output that information.

Thursday, July 23, 2009

Viewing Superglobals

• The feature is called by executing xdebug_dump_superglobals(). • It can also be set to be output by default during a stack trace.

Thursday, July 23, 2009

Superglobal Output Thursday, July 23, 2009

Viewing ZVals • XDebug offers the ability to view the zval. • This is better than debug_zval_dump() function in PHP. • xdebug_debug_zval([string varname]) • xdebug_debug_zval_stdout([string varname]) Thursday, July 23, 2009

Displaying Zvals Thursday, July 23, 2009

Xdebug For Profiling

Thursday, July 23, 2009

I don’t need to profile! Everyone Should Profile!

Thursday, July 23, 2009

Profiling Made Easy: Function Traces • Function traces are easy to set up and run, and they create plain-text, humanreadable files you can review. • Easy to see the path a script takes to completion. • Can be done in less than five minutes.

Thursday, July 23, 2009

Function Trace Thursday, July 23, 2009

Lots of configuration choices • Can be configured to run at script execution time through php.ini or htaccess. • Can be run for a period of time by calling xdebug_start_trace() and stopped with xdebug_stop_trace().

Thursday, July 23, 2009

Function Trace Settings • xdebug.auto_trace (0) Traces the file automatically on startup. Useful if you use auto_prepend. • xdebug_collect_includes (1) Collect the names of the files that are included and include them in the trace.

Thursday, July 23, 2009

Function Trace Settings • xdebug.collect_params (0) Collect the values passed (the function trace I showed had this set to 1). • xdebug.collect_return (0) Collect the returns of various functions. Useful for debugging.

Thursday, July 23, 2009

Function Trace Settings • Twelve total configuration setttings. • Three execution functions. • More information: http://xdebug.org/docs/ execution_trace

Thursday, July 23, 2009

Why Use Function Traces? • Faster to set up than traditional profiling (personal opinion). • Gives you an immediate outline of an application’s logic. • See how a variable passes through an application.

Thursday, July 23, 2009

True Profiling: Xdebug Profiler • Xdebug comes with a built-in profiling tool that creates a true profile output that can be visualized in CacheGrind. • The profiler must be started with an INI setting (either in php.ini or htaccess).

Thursday, July 23, 2009

Execution Visualized Thursday, July 23, 2009

Execution Visualized Thursday, July 23, 2009

Xdebug profiler Options

• xdebug.profiler_enable (0) Enables the profiler. Must be done as an INI setting. • xdebug.profiler_append (0) Append the file, rather than overwrite it when profiling.

Thursday, July 23, 2009

Other Xdebug Tools • Code Coverage - Determine how much of your code is actually executed. Useful for unit testing. • Remote Debugging - Debug scripts remotely. Check with your IDE maker for more.

Thursday, July 23, 2009

XDebug Code Coverage Thursday, July 23, 2009

Code Coverage

• Code coverage report shows what lines were executed. • For better (and graphical) code coverage with your unit tests, try PHPUnit.

Thursday, July 23, 2009

How To Reach Me

• Website: www.brandonsavage.net • Twitter: brandonsavage • Email: [email protected]

Thursday, July 23, 2009

By the way, We’re Hiring!

Thursday, July 23, 2009

Questions?

Thursday, July 23, 2009

Related Documents

Xdebug Your Code
May 2020 3
Presenting Your Code
August 2019 24
Derick Rethans-xdebug
August 2019 23
Code
June 2020 11
Code
November 2019 28
Code
July 2020 8