Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Opening The Black Box

milsyobtaf
October 20, 2017

Opening The Black Box

Trying to tame a modern, fully-featured web application like Drupal can be an exercise in frustration.

Why are you printing that piece of content there?
Why am I seeing a negative integer instead of a string from this function?
What could a PDOException in my Watchdog log possibly mean?
In this session, we will be going over useful debugging tools and techniques that can help you start to see into the inner workings of all versions of Drupal, including the new kid on the block, Drupal 8. You will be better prepared to start building truly custom features into your projects and you’ll be able to remain calm when you get the ineveitable email that your site is showing the dreaded White Screen Of Death at 4:45pm on a Friday afternoon.

Presented at:
DrupalCamp Cornell 2017
Full Slidedeck with Speaker Notes:
https://github.com/milsyobtaf/prez/blob/primary/2017/DrupalCampCornell/opening-the-black-box_notes.pdf

milsyobtaf

October 20, 2017
Tweet

More Decks by milsyobtaf

Other Decks in Technology

Transcript

  1. DrupalCamp Cornell 10/20/2017
    Opening
    The
    Black Box

    View full-size slide

  2. Howdy!
    Dustin Younse
    @milsyobtaf
    I’m an engineer at
    Acquia
    https://github.com/milsyobtaf/prez

    View full-size slide

  3. What Is Debugging?

    View full-size slide

  4. What Is Debugging?

    View full-size slide

  5. Nothing But Text?

    View full-size slide

  6. • CSS aggregated but not cached
    • JS blocked in the browser
    • File permissions in sites/default/files
    Nothing But Text?

    View full-size slide

  7. • Mostly a semantic difference
    • 5 minutes vs 5 hours?
    • “Fixed” vs understood and corrected
    Debugging vs Troubleshooting

    View full-size slide

  8. What Is The Black Box?

    View full-size slide

  9. • Non-technical education
    • Self taught web skills
    • Above average Googling abilities
    • Late nights staring at error messages
    A Familiar Story?

    View full-size slide

  10. What Is Drupal?

    View full-size slide

  11. Mental Model of Drupal

    View full-size slide

  12. Mental Model of Drupal

    View full-size slide

  13. Mental Model of Drupal

    View full-size slide

  14. Mental Model of Drupal

    View full-size slide

  15. Mental Model of Drupal

    View full-size slide

  16. Mental Model of Drupal

    View full-size slide

  17. Start At The Beginning

    View full-size slide

  18. When All You Have Is A Hammer
    CC by 2.0 https://www.flickr.com/photos/raindrift/7095238893/

    View full-size slide

  19. Text Editors
    • “Text Editors”
    • Text Editors
    • IDEs

    View full-size slide

  20. • Notepad (Windows)
    • Text Edit (Mac)
    • Nano (Linux / Mac)
    “Text Editors”

    View full-size slide

  21. • Notepad++ (Windows)
    • Dreamweaver (Mac / Windows)
    • Sublime Text (Mac / Linux / Windows)
    • Atom (Mac / Linux / Windows)
    • vim (Mac / Linux)
    Text Editors

    View full-size slide

  22. • PHPStorm (Mac / Linux / Windows)
    • Eclipse (Mac / Linux / Windows)
    • Komodo (Mac / Linux / Windows)
    Integrated Development
    Environments

    View full-size slide

  23. • emacs (Mac / Linux / Unix / Everything else)
    Operating Systems With Built
    In Text Editors

    View full-size slide

  24. Development Environments
    • On your server
    • On your machine
    • On your machine, but it acts like the server

    View full-size slide

  25. Development Environments
    • FTP Development
    • “Cowboy coding”
    • Local Environments
    • MAMP / LAMP / Vagrant
    • Next generation
    • Kalabox / Lando CLI
    • DrupalVM

    View full-size slide

  26. • FTP Development
    • “Cowboy coding”
    • No version control up front
    • Little debugging visibility
    • Log files (maybe), debug statements
    • Watchdog logs (maybe)
    FTP Development

    View full-size slide

  27. • print_r()
    • Raw dump of a variable or context, no formatting
    • print_r($node);

    • dsm() / kint()
    • Formatted dump of a variable or context
    • dsm($node);
    Debug Statements in Code

    View full-size slide

  28. • MAMP / Dev Desktop / Native LAMP
    • Code runs entirely locally
    • Added bonus of offline work, no internet required
    • print_r(), dsm(), kint(), but also more
    • xdebug
    Local Development

    View full-size slide

  29. • Kalabox / Lando with Pantheon / Acquia integration
    • DrupalVM and other custom Vagrant boxes
    • print_r(), dsm(), kint(), xdebug
    • Very accurate performance profiling
    • XHProf
    • Blackfire
    • Tidewater
    Local Development:
    The Next Generation

    View full-size slide

  30. What’s xdebug?

    View full-size slide

  31. • Hitting pause on code execution
    • Inspecting the current state of “the stack”
    • Modifying values live
    xdebug: Step Through
    Debugging

    View full-size slide

  32. Something Is Broken!

    View full-size slide

  33. Remember Cobble’s Knot

    View full-size slide

  34. • Is something not showing up?
    • New content - is it published?
    • Old content - are permissions set properly?
    • Is something showing up that shouldn’t?
    • Raw HTML and Javascript in a WYSIWYG field?
    What’s Broken?

    View full-size slide

  35. • Log Files
    • You should learn how to find your log files 

    before you need your log files
    • multitail
    • Linux / Mac utility to easily view logs

    with more options than tail
    Work From The Bottom Up

    View full-size slide

  36. • Custom Module
    • template.php / .theme file
    • Theme Template
    Where Is It Broken?

    View full-size slide

  37. The Scientific Method

    View full-size slide

  38. • Change one thing at a time
    • Test that change
    • Repeat
    Finally, Debugging

    View full-size slide

  39. • Save your progress as you work
    • Recreate your Features or config yml
    • Makes rabbit holes manageable
    git Is Your Friend

    View full-size slide

  40. • Let’s you isolate changes between commits
    git bisect Is Your Friend

    View full-size slide

  41. git bisect Is Your Friend

    View full-size slide

  42. git bisect Is Your Friend

    View full-size slide

  43. • Remove your debug statements
    • Ensure you only changed as much as you 

    needed to change
    • You only commit dsm(‘Butts’); to master once
    git diff Is Your Friend

    View full-size slide

  44. git blame Finds Your Enemies

    View full-size slide

  45. git blame Finds Your Enemies

    View full-size slide

  46. git blame Is Your Friend

    View full-size slide

  47. • Can help you track down who wrote 

    the offending code
    • This should not be a witch hunt
    • This should be a chance to find 

    context for the issue
    git annotate Is Your Friend

    View full-size slide

  48. Other Debugging Methods

    View full-size slide

  49. • Walk away. Seriously.
    • Talk to a coworker.
    • Talk to a rubber duck.
    • Write it down. By hand.
    Debugging Techniques

    View full-size slide

  50. Make The Future Easier

    View full-size slide

  51. • watchdog() (D7)
    • \Drupal::logger() (D8)
    • syslog Module
    • https:/
    /www.elastic.co/blog/heya-elastic-stack-and-x-pack
    • https:/
    /loggly.com
    • https:/
    /www.sumologic.com
    • Write a test!
    • Simpletest
    • Behat
    Proactive Debugging

    View full-size slide

  52. • The Art of Troubleshooting by Jason Maxham
    • https://artoftroubleshooting.com/book/
    • Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive
    Software and Hardware Problems by David Agans
    • http://debuggingrules.com
    • Debugging During Development in Drupal 8 by Allie Jones
    • https://www.gitbook.com/book/zivtech/debug-tools-for-drupal8/
    • Using the PhpStorm Debugger by JetBrains
    • https://confluence.jetbrains.com/x/_idqAw
    • Maniac Magee by Jerry Spinelli
    • https://www.worldcat.org/oclc/20422223
    Further

    Reading

    View full-size slide

  53. Thanks!

    Questions?

    War stories?

    @milsyobtaf
    https://github.com/milsyobtaf/prez

    View full-size slide