Diff for "Debugging"

Not logged in - Log In / Register

Differences between revisions 8 and 9
Revision 8 as of 2009-09-15 10:08:57
Size: 2869
Editor: allenap
Comment:
Revision 9 as of 2009-09-15 10:11:53
Size: 2869
Editor: allenap
Comment:
Deletions are marked like this. Additions are marked like this.
Line 62: Line 62:
`CategoryTipsAndTricks`_ .. CategoryTipsAndTricks
Rendering of reStructured text is not possible, please install Docutils.

This page collects tips that might make debugging Launchpad a little easier.  They're presented in no particular order -- please add yours!

===========================
Debugging stories/pagetests
===========================

Debugging stories (a.k.a. pagetests) can be kind of a pain because they build up state as they go.  So if a test fails down deep in the doctest, and you want to see what the page really looks like at that point, you'd normally have to manually click through each step in the doctest until you get to the place that's broken.

But there's an easier way!

Just add this at the point where your pagetest is failing::

    >>> stop()

This is just a convenience wrapper around ``pdb.set_trace()`` except that it also redirects stdout back to your console.  When your pagetest hits this line, you'll be dropped into the debugger.  Now, go to a different shell and type::

    % make LPCONFIG=testrunner run

This starts up the appserver, except that it will use the ``testrunner`` configuration.  What's cool about that is that this configuration attaches to the same database as the pagetest you're now stopped inside of.  Meaning, all that state your doctest has built up, is available to your browser.  So just hit the URL of the page that your doctest is failing on, and see it in all it's wondrous, albeit borked, glory.

==================
Debugging With GDB
==================

Some kinds of bugs (segfaults, hung processes, out-of-control daemons) are hard to debug from within Python.  See `Debugging/GDB`_ for how to debug them.

============
Special URLs
============

Launchpad provides special URLs that can be used to help with debugging.

===================  ================================================================================================================
  URL element        Description
===================  ================================================================================================================
``++oops++``         record an OOPS report while still rendering the page correctly. The OOPS id is provided in the HTML source code
``++debug++error``   XXX: fill in description
``++debug++tal``     show the TAL declarations in the HTML source code
``++debug++source``  show path to templates for a given view
``++form++``         XXX: fill in description
===================  ================================================================================================================

Some of those can combined, like: ++debug++tal,source

Examples
--------

https://launchpad.dev/++oops++

https://launchpad.dev/++debug++tal

https://launchpad.dev/++debug++source

https://launchpad.dev/++debug++error - XXX: returns an OOPS

https://launchpad.dev/++form++ - XXX: returns a 404

----

.. CategoryTipsAndTricks

Debugging (last edited 2021-09-14 10:44:48 by ilasc)