SlideShare a Scribd company logo
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
OVERVIEW
•   Environment configuration
•   PHP debugging with Magento/Eclipse
•   Common Magento development problems
•   Mage::log()
•   Quick tips
The Imagine Conference has been excellently
   planned, but… they made one fatal mistake…




One important detail: My name is   Erik
   Hansen
Erik != Eric
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
ENABLE DEVELOPER MODE
•   Enable Mage::isDeveloperMode() on development and staging
    environments
     • Preferably, set the MAGE_IS_DEVELOPER_MODE via .htaccess file or
       server configuration. Example:




     • Alternatively, set the developer mode using conditional code in index.php:
SHOW ALL ERRORS IN DEVELOPER MODE
•   Modify index.php with this conditional code to ensure that all errors are
    displayed when in developer mode:
NATIVE MAGENTO EXCEPTIONS
vs. XDEBUG EXCEPTIONS
                                            Links to the
                                          location the file



                              Fully
                            expanded
                            argument
                            variables




Local variables
INSTALL XDEBUG
•   Install Xdebug (an Apache module) on your development/staging
    servers
•   My recommended xdebug configuration values: http://bit.ly/gspkIK
MODIFY THE Mage CLASS
  •   Modify the Mage::run() method to not catch exceptions if developer
      mode is on (blog post explaining how to make this modification:
      http://bit.ly/feJE2y)
MODIFY THE Mage_Core_Model_App CLASS
  •   Modify the Mage_Core_Model_App::setErrorHandler() method to not set
      an error handler if developer mode is on (blog post explaining how to
      make this modification: http://bit.ly/co1qc4 )
CONFIGURE EXCEPTION HANDLER TO EMAIL REPORTS
ON A PRODUCTION SITE
 •   Optimize the way that
     exceptions are handled on a
     production site
 •   Configure Magento to send
     email upon every exception
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
BASIC XDEBUG/ECLIPSE SETUP
    •   Xdebug – Use config setting from previous slide
    •   Eclipse – Follow configuration instructions below:




1




2
Link to video: http://www.youtube.com/watch?v=6AynpmjW5us
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
UNCOVER THE SOURCE OF SQLSTATE ERRORS

•   What do you do when Magento throws a generic SQLSTATE database
    error?
UNCOVER THE SOURCE OF SQLSTATE ERRORS
• Example log file from SQLSTATE error


                                 Faulty SQL   SQL error
                                   query      message




                  Backtrace up
                   to point of
                   exception
UNCOVER THE SOURCE OF SQLSTATE ERRORS
• Modify Zend_Db_Adapter_Pdo_Abstract to get backtraces for single queries.
• Copy to app/code/local/Zend/Db/Adapter/Pdo/Abstract.php
UNCOVER THE SOURCE OF SQLSTATE ERRORS
• Modify Zend_Db_Statement_Pdo to get backtraces for transactional query
  errors
• Copy to app/code/local/Zend/Db/Adapter/Pdo/Abstract.php
THINGS TO CHECK WHEN A CUSTOM
      MODULE DOESN’T LOAD

Problem: You’ve created a basic skeleton of a
module with a module xml file, config.xml file,       2
layout file, and block, but the module isn’t
showing. Here are some quick steps you can
take to debug the issue:




                                                          3




                                                  1
DEBUGGING BY PROCESS OF ELIMINATION
Problem: You are working on a site with 5 third-party modules and 9
custom modules. You’ve heavily modified the way that products work in
the system. You run into an error where products aren’t saving from the
admin.
•   You can either:
     • Work backward by reading code OR:
     • Isolate the issue by disabling modules
DEBUGGING BY PROCESS OF ELIMINATION
• Disable all custom modules, then selectively re-enable modules until you’ve
  found the problematic module

     1                               2                              3
DEBUGGING BY PROCESS OF ELIMINATION
• Once the offending module is identified, comment out sections of
config.xml to determine component that is causing the error


    1                               2                                3
VAGUE ERROR MESSAGE
    Problem: Your client tries to place an order in the admin. When doing so,
       they get a generic error message about the “The product could not be
       found”. You check the error and exception logs, but you have nothing
       to work with. What do you do?


1




      2




3
DISABLING A MODULE VS DISABLING BLOCK OUTPUT




                         V
                         S
WHEN COLLECTIONS DON’T LOAD THE ITEMS YOU WANT
•   $collection->load(true, true); logs the query to system.log and prints it to
    screen




• You can then use that query in a SQL tool to see why items aren’t loading




• Reference this Knowledge Base article for tips on collections: http://bit.ly/h0itx6
A MODEL/BLOCK/HELPER REWRITE WON’T WORK…
•   Is another module trying to override the same model/block/helper that
    you’re trying to override?
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
USING MAGE::LOG – BASIC EXAMPLE
•   Logging is disabled by default.
    Enable it in Configuration >
    Developer > Log Settings




•   Mage::log() allows you to log code to either the default
    var/logs/system.log file, or a custom file.




•   Message gets logged to var/logs/customfile.log
USING MAGE::LOG – NOTIFICATIONS/ERROR NOTICES
USING MAGE::LOG – LOGGING API RESPONSES
View XML/CGI responses from API calls, like shipping quote requests
USING MAGE::LOG –DETERMINE CODE COVERAGE
Find out if a certain line of code is getting reached. Alternative to using
   debugger.
USING MAGE::LOG – VIEWING LOG DATA
•    You can monitor the contents of the log files using:
    • Command-line: tail –f <file_name>
    • OS X: Console.app (Must have developer tools installed)
    • Windows: Baretail (http://www.baremetalsoft.com/baretail/ )
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
CHECK THE BUG TRACKER / FORUMS
•   Someone may have already solved your problem
•   If the bug tracker has marked an item as resolved, look in the comments
    for a code patch, or the SVN trunk
WILL A NEWER VERSION OF MAGENTO FIX THE
ISSUE AT HAND?
•   Setup upgrade environment and do a quick upgrade to latest production
    release to see if that solves the issue
ISOLATE CODE IN A “SANDBOX.PHP” FILE
•   Allows you to run code outside of the context of a controller/page
•   Copy index.php to sandbox.php
•   Modify Mage::run to Mage::app
GENERAL ADVICE
•   Don’t get stuck in a certain way of solving problems.
•   Read (and understand) the code
•   Before delving into a problem headlong, take a step back and think
    holistically about the problem
QUESTIONS?
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
OPTIMIZING BUGGY/SLOW CODE W/ VARIEN_PROFILER

   •   Find out what events are getting triggered on a page
   •   How many times is your custom code running?
   •   Optimize slow code
STANDARD MAGENTO PROFILE (OUTPUT IN HTML TABLE)
•   You must enable profiler in System > Configuration > Developer > Profile
CUSTOM MAGENTO PROFILE (OUTPUT TO LOG FILE)
• Modify index.php




1




2



           Profile gets logged to var/log/profiler.log

3
CUSTOMIZED PROFILE THAT EXTENDS NATIVE PROFILE WITH
MYSQL QUERIES

•   Read about how to implement this on Branko Ajzele’s blog:
    http://bit.ly/geMSrT
CONCLUSION
•   Code samples referenced in slides available here: http://bit.ly/dNNgxU
•   Eclipse walkthrough video:
    http://www.youtube.com/watch?v=6AynpmjW5us

More Related Content

PPTX
CakePHP - Admin Acl Controlled
PDF
Behaviour Driven Development con Behat & Drupal
PPTX
Using galen framework for automated cross browser layout testing
PDF
Java, Eclipse, Maven & JSF tutorial
KEY
Enterprise Build And Test In The Cloud
KEY
Enterprise Build And Test In The Cloud
KEY
Eclipse IAM, Maven Integration For Eclipse
PPTX
System Architecture using Maven Modularity
CakePHP - Admin Acl Controlled
Behaviour Driven Development con Behat & Drupal
Using galen framework for automated cross browser layout testing
Java, Eclipse, Maven & JSF tutorial
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
Eclipse IAM, Maven Integration For Eclipse
System Architecture using Maven Modularity

What's hot (17)

PPTX
S/W Design and Modularity using Maven
PDF
Session on Selenium Powertools by Unmesh Gundecha
PPT
Oracle Forms: create debug triggers
ODP
Java and XPages
PPT
Top 50 Interview Questions and Answers in CakePHP
PPT
Maven, Eclipse And OSGi Working Together
PPTX
Take Your XPages Development to the Next Level
PPTX
Maven plugins, properties en profiles: Advanced concepts in Maven
PPTX
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
PPT
Q4E and Eclipse IAM, Maven integration for Eclipse
PDF
Servlet and jsp development with eclipse wtp
PDF
Maven plugin guide using Modello Framework
PDF
Why gradle
ODP
Automated UI testing with Selenium
PPTX
Session on Launching Selenium Grid and Running tests using docker compose and...
PPT
Springboot introduction
S/W Design and Modularity using Maven
Session on Selenium Powertools by Unmesh Gundecha
Oracle Forms: create debug triggers
Java and XPages
Top 50 Interview Questions and Answers in CakePHP
Maven, Eclipse And OSGi Working Together
Take Your XPages Development to the Next Level
Maven plugins, properties en profiles: Advanced concepts in Maven
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Q4E and Eclipse IAM, Maven integration for Eclipse
Servlet and jsp development with eclipse wtp
Maven plugin guide using Modello Framework
Why gradle
Automated UI testing with Selenium
Session on Launching Selenium Grid and Running tests using docker compose and...
Springboot introduction
Ad

Similar to Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios (20)

PDF
Best Practices for Magento Debugging
PDF
Code Coverage for Total Security in Application Migrations
PPTX
Opendaylight SDN Controller
PDF
Oracle business intelligence enterprise edition 11g
PPTX
Orlando DNN Usergroup Pres 12/06/11
PDF
Introduction to the Magento eCommerce Platform
PPTX
Agility Requires Safety
PDF
tut0000021-hevery
PDF
tut0000021-hevery
PPTX
Troubleshooting mule
PPTX
Zendcon magento101
PPTX
Meet Magento Spain 2019 - Our Experience with Magento Cloud
PDF
Front-End Modernization for Mortals
PDF
Front end-modernization
PDF
Front end-modernization
PDF
PDF
WebObjects Developer Tools
ODP
Dolibarr information for developers - Christmas devcamp in Valence
PDF
Care and Feeding of Large Web Applications
Best Practices for Magento Debugging
Code Coverage for Total Security in Application Migrations
Opendaylight SDN Controller
Oracle business intelligence enterprise edition 11g
Orlando DNN Usergroup Pres 12/06/11
Introduction to the Magento eCommerce Platform
Agility Requires Safety
tut0000021-hevery
tut0000021-hevery
Troubleshooting mule
Zendcon magento101
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Front-End Modernization for Mortals
Front end-modernization
Front end-modernization
WebObjects Developer Tools
Dolibarr information for developers - Christmas devcamp in Valence
Care and Feeding of Large Web Applications
Ad

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation theory and applications.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Empathic Computing: Creating Shared Understanding
PDF
Electronic commerce courselecture one. Pdf
Unlocking AI with Model Context Protocol (MCP)
MIND Revenue Release Quarter 2 2025 Press Release
Building Integrated photovoltaic BIPV_UPV.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
20250228 LYD VKU AI Blended-Learning.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
A Presentation on Artificial Intelligence
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
Programs and apps: productivity, graphics, security and other tools
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
SOPHOS-XG Firewall Administrator PPT.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
The Rise and Fall of 3GPP – Time for a Sabbatical?
Empathic Computing: Creating Shared Understanding
Electronic commerce courselecture one. Pdf

Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios

  • 2. OVERVIEW • Environment configuration • PHP debugging with Magento/Eclipse • Common Magento development problems • Mage::log() • Quick tips
  • 3. The Imagine Conference has been excellently planned, but… they made one fatal mistake… One important detail: My name is Erik Hansen
  • 6. ENABLE DEVELOPER MODE • Enable Mage::isDeveloperMode() on development and staging environments • Preferably, set the MAGE_IS_DEVELOPER_MODE via .htaccess file or server configuration. Example: • Alternatively, set the developer mode using conditional code in index.php:
  • 7. SHOW ALL ERRORS IN DEVELOPER MODE • Modify index.php with this conditional code to ensure that all errors are displayed when in developer mode:
  • 9. vs. XDEBUG EXCEPTIONS Links to the location the file Fully expanded argument variables Local variables
  • 10. INSTALL XDEBUG • Install Xdebug (an Apache module) on your development/staging servers • My recommended xdebug configuration values: http://bit.ly/gspkIK
  • 11. MODIFY THE Mage CLASS • Modify the Mage::run() method to not catch exceptions if developer mode is on (blog post explaining how to make this modification: http://bit.ly/feJE2y)
  • 12. MODIFY THE Mage_Core_Model_App CLASS • Modify the Mage_Core_Model_App::setErrorHandler() method to not set an error handler if developer mode is on (blog post explaining how to make this modification: http://bit.ly/co1qc4 )
  • 13. CONFIGURE EXCEPTION HANDLER TO EMAIL REPORTS ON A PRODUCTION SITE • Optimize the way that exceptions are handled on a production site • Configure Magento to send email upon every exception
  • 15. BASIC XDEBUG/ECLIPSE SETUP • Xdebug – Use config setting from previous slide • Eclipse – Follow configuration instructions below: 1 2
  • 16. Link to video: http://www.youtube.com/watch?v=6AynpmjW5us
  • 18. UNCOVER THE SOURCE OF SQLSTATE ERRORS • What do you do when Magento throws a generic SQLSTATE database error?
  • 19. UNCOVER THE SOURCE OF SQLSTATE ERRORS • Example log file from SQLSTATE error Faulty SQL SQL error query message Backtrace up to point of exception
  • 20. UNCOVER THE SOURCE OF SQLSTATE ERRORS • Modify Zend_Db_Adapter_Pdo_Abstract to get backtraces for single queries. • Copy to app/code/local/Zend/Db/Adapter/Pdo/Abstract.php
  • 21. UNCOVER THE SOURCE OF SQLSTATE ERRORS • Modify Zend_Db_Statement_Pdo to get backtraces for transactional query errors • Copy to app/code/local/Zend/Db/Adapter/Pdo/Abstract.php
  • 22. THINGS TO CHECK WHEN A CUSTOM MODULE DOESN’T LOAD Problem: You’ve created a basic skeleton of a module with a module xml file, config.xml file, 2 layout file, and block, but the module isn’t showing. Here are some quick steps you can take to debug the issue: 3 1
  • 23. DEBUGGING BY PROCESS OF ELIMINATION Problem: You are working on a site with 5 third-party modules and 9 custom modules. You’ve heavily modified the way that products work in the system. You run into an error where products aren’t saving from the admin. • You can either: • Work backward by reading code OR: • Isolate the issue by disabling modules
  • 24. DEBUGGING BY PROCESS OF ELIMINATION • Disable all custom modules, then selectively re-enable modules until you’ve found the problematic module 1 2 3
  • 25. DEBUGGING BY PROCESS OF ELIMINATION • Once the offending module is identified, comment out sections of config.xml to determine component that is causing the error 1 2 3
  • 26. VAGUE ERROR MESSAGE Problem: Your client tries to place an order in the admin. When doing so, they get a generic error message about the “The product could not be found”. You check the error and exception logs, but you have nothing to work with. What do you do? 1 2 3
  • 27. DISABLING A MODULE VS DISABLING BLOCK OUTPUT V S
  • 28. WHEN COLLECTIONS DON’T LOAD THE ITEMS YOU WANT • $collection->load(true, true); logs the query to system.log and prints it to screen • You can then use that query in a SQL tool to see why items aren’t loading • Reference this Knowledge Base article for tips on collections: http://bit.ly/h0itx6
  • 29. A MODEL/BLOCK/HELPER REWRITE WON’T WORK… • Is another module trying to override the same model/block/helper that you’re trying to override?
  • 31. USING MAGE::LOG – BASIC EXAMPLE • Logging is disabled by default. Enable it in Configuration > Developer > Log Settings • Mage::log() allows you to log code to either the default var/logs/system.log file, or a custom file. • Message gets logged to var/logs/customfile.log
  • 32. USING MAGE::LOG – NOTIFICATIONS/ERROR NOTICES
  • 33. USING MAGE::LOG – LOGGING API RESPONSES View XML/CGI responses from API calls, like shipping quote requests
  • 34. USING MAGE::LOG –DETERMINE CODE COVERAGE Find out if a certain line of code is getting reached. Alternative to using debugger.
  • 35. USING MAGE::LOG – VIEWING LOG DATA • You can monitor the contents of the log files using: • Command-line: tail –f <file_name> • OS X: Console.app (Must have developer tools installed) • Windows: Baretail (http://www.baremetalsoft.com/baretail/ )
  • 37. CHECK THE BUG TRACKER / FORUMS • Someone may have already solved your problem • If the bug tracker has marked an item as resolved, look in the comments for a code patch, or the SVN trunk
  • 38. WILL A NEWER VERSION OF MAGENTO FIX THE ISSUE AT HAND? • Setup upgrade environment and do a quick upgrade to latest production release to see if that solves the issue
  • 39. ISOLATE CODE IN A “SANDBOX.PHP” FILE • Allows you to run code outside of the context of a controller/page • Copy index.php to sandbox.php • Modify Mage::run to Mage::app
  • 40. GENERAL ADVICE • Don’t get stuck in a certain way of solving problems. • Read (and understand) the code • Before delving into a problem headlong, take a step back and think holistically about the problem
  • 43. OPTIMIZING BUGGY/SLOW CODE W/ VARIEN_PROFILER • Find out what events are getting triggered on a page • How many times is your custom code running? • Optimize slow code
  • 44. STANDARD MAGENTO PROFILE (OUTPUT IN HTML TABLE) • You must enable profiler in System > Configuration > Developer > Profile
  • 45. CUSTOM MAGENTO PROFILE (OUTPUT TO LOG FILE)
  • 46. • Modify index.php 1 2 Profile gets logged to var/log/profiler.log 3
  • 47. CUSTOMIZED PROFILE THAT EXTENDS NATIVE PROFILE WITH MYSQL QUERIES • Read about how to implement this on Branko Ajzele’s blog: http://bit.ly/geMSrT
  • 48. CONCLUSION • Code samples referenced in slides available here: http://bit.ly/dNNgxU • Eclipse walkthrough video: http://www.youtube.com/watch?v=6AynpmjW5us

Editor's Notes

  • #2: • Been doing Magento development for three years. Have come up with ways to more efficiently solve problems and solve bugs. Want to share them with you all.
  • #3: I won’t be covering everything in minute detail. At the end of the presentation, I’ll provide a link to slideshow and link to blog posts explaining different sections in more detail.It will be a bit randomSome of you will know this stuff
  • #4: They even used my slideshow colors
  • #7: • If you have a dedicated stage/dev server, you should setup a global environment variable in your server’s config• Benefit of second method is that you can deploy one codebase without having to change .htaccess file on independent servers.
  • #8: • This is elementary, but you want to display errors only on dev/stage environments•Sometimes you have issues with E_NOTICE being turned on, during the checkout and possibly some places in the admin
  • #10: You can see all arguments passed to functions in the call stackYou can see all local variables at the location of the error/exceptionYou can customize xdebug to create links that allow you to jump to a specific line/file in your favorite editor
  • #12: • Any time you modify core files, have a standard comment notation so you can search codebase for all edits• Make joke about hacking the core
  • #14: Use case: You’ve launched a site in production or staging. Users get errors. You either have to check var/logs/exceptions.log on a regular basis, or you can setup to get emailed with these notifications so that you can preempt a store owner contacting you about an issue.This should only be setup this way on a production site. On a development site, you should use xdebug’s exception handling.• Copy errors/local.xml.template to errors/local.xml• The generated exception will be logged to var/log/exceptions.log
  • #15: Use cases for debugging:• Understanding how the core system works• Determining non-obvious bugs in your code – ie, bugs that don’t throw errors/exceptions
  • #16: Eclipse = PDT or Zend Studio
  • #19: • Example errors: Lock wait timeout, integrity constraint errors, out of memory, etc...Especially relevant for errors encountered in the admin panel Modify (harmlessly) two files
  • #23: Check if the module’s xml file is loading Create a syntax errorCheck if the module’s config.xml file is loadingCheck if the layout file is loadingMake sure caching is disabled remove the cache directory if it exists (var/cache)
  • #24: A completely different approach than jumping directly into the code. Helps isolate the problem
  • #27: •Copy the error messageSearch the Magento codebase for the errorOnce you locate the error, set a breakpointUse debug tools to discover the cause of the error
  • #28: Disabling block output explainedYou can access this option in System &gt; Configuration &gt; AdvancedDisabling a module’s block output makes the XXXX class not output the contents of any blocks in that moduleWhy would you disable a modules block output as opposed to disabling it? NOTE: Fill in detailsCore Magento classes that are commonly disabledMage_Poll, Mage_Review, Mage_Tag, Mage_Wishlist (NOTE: Need toverifythattherearenoissuesdisablingthesemodule‘s block output)Disabling a moduleChange the &lt;active&gt;true&lt;/active&gt; to falseRemove the module’s config file from app/etc/modules
  • #32: This is helpful if you want to know what code is calling a specific section of code. This can be helpful when testing methods that are difficult to use a debugger on, such as Paypal code
  • #33: Preventative method of doing development
  • #35: TODO: Include example output
  • #41: Example: Once you get familiar with a debugger, it’s easy to resort to debugging without first reading through the code, checking the bug tracker, etc…Get up, go get a drink, etc… I’ve had more epiphanies about how to solve problems when going pee than anyplace else
  • #45: Events &amp; their observers, controller dispatches, model loads, etc…
  • #46: Useful for Ajax, Paypal responses, API calls, etc…
  • #48: • Useful to determine what your queries look like• If a collection isn’t loading, look at and analyze the query