The Strange World of PHP Debugging

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    The Strange World of PHP Debugging - Presentation Transcript

    1. The Strange World of Debugging PHP Refresh Cambridge, 1 July 2009 Simon R Jones, Studio 24 www.studio24.net
    2. We’re trying to avoid this White screen of death
    3. Which makes us feel like this http://www.flickr.com/photos/nebarnix/320901099/
    4. While we’d rather be happily getting on with development http://www.flickr.com/photos/sjaek/468245227/
    5. Debugging PHP • What is a bug? • Common errors • Error reporting • Basic debugging techniques • A proper PHP debugger • Best practises
    6. What is a bug? • Human error (typos) • Logic errors • Environmental errors (files, web service, db) • And rarely, it’s a system bug (PHP, Apache)!
    7. Common errors
    8. Syntax errors • Something’s usually in the wrong place.. • T_ENCAPSED_AND_WHITESPACE
    9. Syntax errors • T_NUM_STRING • T_OBJECT_OPERATOR • T_STRING • T_VARIABLE • T_PAAMAYIM_NEKUDOTAYIM ! (means double colon in Hebrew)
    10. Whose line is it anyway? • The syntax error isn’t always on the line reported • Usually the case with missing quotes
    11. Headers already sent • PHP mime type = text/html • A single space after a closing ?> will send HTML + headers to the browser • Don’t include the closing ?> tag (unless you’re outputting HTML)
    12. Error Reporting
    13. Recommended settings Production (live) site • Hide on screen • Display friendly error page • Log errors Development site • Display on screen
    14. Display errors • Default php.ini setting is to hide errors • Override in first PHP file • A gotcha: any syntax errors in this file will ignore these settings • Error reporting is a bitwise setting
    15. Bitwise operators • Report all errors.. • But not notices • And not warnings • http://php.net/manual/en/function.error- reporting.php
    16. Error types • Parse error • Fatal error • Warning • Notice • Strict notice
    17. Error log • Default is to log errors to the Apache ErrorLog location (usually set in a VirtualHost directive) • A gotcha: this overrides php.ini error_log setting which can be confusing • Can be overridden with PHP options log_errors and error_log
    18. Custom error reporting • set_error_handler() • Set a callback function (or class) to manage errors • Show nice error page to users on live site • Email critical errors to the tech team • http://uk3.php.net/manual/en/function.set-error- handler.php
    19. Throwing errors • Throw errors in your code (i.e. if a database call fails) • trigger_error() • Exceptions in PHP 5 • Always program defensively, don’t assume that database call will always work or a certain field will exist in an external XML file
    20. Supressing errors • @ operator • Arrgh, not generally a good idea • Sometimes a valid use case (i.e. throw an exception on function failure) • Scream to disable supressed errors! •ini_set('scream.enabled', 1);
    21. Watch out! Errors suppressed with the @ operator are still sent to a custom error handler. Can cause headaches and unexplained bugs!
    22. Exceptions • PHP 5 only • Only classes can throw an exception • set_exception_handler() to deal with uncaught exceptions • Uncaught exceptions raise a Fatal error
    23. Pretty Blue Screen • Nice exception handler from Harry Fuecks • http://www.sitepoint.com/blogs/2006/04/04/ pretty-blue-screen/
    24. Basic debugging techniques
    25. var_dump • Tracking variables throughout code • Add formatting: • Better: Zend_Debug::dump()
    26. Debug window • Javascript debug window • http://devzone.zend.com/article/1256
    27. Firebug console logging • Firebug and FirePHP plugins for Firefox • Doesn’t send output to HTML page so won’t interfere with sessions, headers, etc • Zend_Log_Writer_Firebug • www.getfirebug.com
    28. ZFDebug • Zend Framework plugin to display debug information (time spent, memory usage, database queries, etc) • http://jokke.dk/software/zfdebug
    29. A proper debugger • Step through your code line by line • Set breakpoints • View environment, script variables and function paramters at each step • View browser output • Profiling
    30. Xdebug • Open Source • Packaged with Komodo IDE • Or via http://www.xdebug.org/
    31. Zend Debugger • Commercial • Part of Zend Studio • Debugging from Firefox or from within Zend Studio
    32. Best practises • Use an IDE with PHP syntax checking • Enforce coding standards • Comment your code! (PHPDoc) • Defensive programming • Lightweight inital PHP file to help report errors • Break complex code into smaller chunks (OO) • Peer review • Write Unit tests for small, discrete bits of code • Ensure the staging site is on the same server setup as the live site
    33. Links • Zend Studio - www.zend.com/studio • Eclipse + PDT - www.zend.com/en/community/pdt • Komodo - www.activestate.com/komodo/ • Zend Framework docs - http://framework.zend.com/ manual/en/ • Blog article: Debugging development - http://techportal.ibuildings.com/2009/03/16/debugging- development/
    34. Thanks! Simon R Jones, Studio 24, www.studio24.net

    + simonrjonessimonrjones, 4 months ago

    custom

    577 views, 1 favs, 0 embeds more stats

    A talk I gave at Refresh Cambridge on 1st July, 200 more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 577
      • 577 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories