http://www.zope.org/Members/rossp/PDBDebugMode PDBDebugMode - PDB post-mortem debugging on exceptions when debug-mode=on If a relevant error log object is found, exceptions included in the error log's ignored exception types will be ignored and the debugger won't be invoked. It also enables the import of the pdb module in unprotected code. On encountering an error, the port-mortem debugger is invoked with the error's traceback. Once in the debugger you can examine objects, variables, etc. at all levels of the call stack. This is, of course, extremely useful for debugging. Since it only does anything if the instance is running with debug-mode=on, I find this product useful not only for debugging on my development instances, but also for doing quick emergency debugging on a live production site. IOW, if the problem is only reproducable on the production site but not on my development instance, I'll restart the production instance in debug-mode with pdb in emacs, reproduce the error, inspect the call stack. Ross Patterson
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ross Patterson wrote:
http://www.zope.org/Members/rossp/PDBDebugMode
PDBDebugMode - PDB post-mortem debugging on exceptions when debug-mode=on
If a relevant error log object is found, exceptions included in the error log's ignored exception types will be ignored and the debugger won't be invoked.
It also enables the import of the pdb module in unprotected code.
On encountering an error, the port-mortem debugger is invoked with the error's traceback. Once in the debugger you can examine objects, variables, etc. at all levels of the call stack. This is, of course, extremely useful for debugging.
Since it only does anything if the instance is running with debug-mode=on, I find this product useful not only for debugging on my development instances, but also for doing quick emergency debugging on a live production site. IOW, if the problem is only reproducable on the production site but not on my development instance, I'll restart the production instance in debug-mode with pdb in emacs, reproduce the error, inspect the call stack.
Way cool! What would you think about incorporating a version of this into the Zope2 core for version 2.10? I think we would need to add some additional ZConfig schema to support it, as the mere presence of the product would not be sufficient as an enabling knob (in fact, there mightn't be any "product" at all). If you're willing, I'd be glad to help land it (I think Z3 already has a similar feature, wired in as a separate server). Tres. - -- =================================================================== Tres Seaver +1 202-558-7113 tseaver@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFEFwPR+gerLs4ltQ4RAgSXAJ9yBgpP74cQc+8gDoQScdhdV9fZkgCffP4N FJ3XyKUG/hijv0ZaM3Se3+0= =EL3t -----END PGP SIGNATURE-----
On Tue, Mar 14, 2006 at 12:56:33PM -0500, Tres Seaver wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Ross Patterson wrote:
http://www.zope.org/Members/rossp/PDBDebugMode
PDBDebugMode - PDB post-mortem debugging on exceptions when debug-mode=on (snip) Way cool! What would you think about incorporating a version of this into the Zope2 core for version 2.10? I think we would need to add some additional ZConfig schema to support it, as the mere presence of the product would not be sufficient as an enabling knob (in fact, there mightn't be any "product" at all).
If you're willing, I'd be glad to help land it (I think Z3 already has a similar feature, wired in as a separate server).
I've only just tried PDBDebugMode, very handy since you don't have to put set_trace() in your code (and remember to remove it). I have also sometimes used Chris Withers' "zdb" product, http://www.simplistix.co.uk/software/zope/zdb, which has some overlap in that it allows you to do this in restricted code, e.g. cmf scripts: from Products.zdb import set_trace set_trace() ... and, very usefully, once in the debugger you can use the "l" command to see the script source and it gets line numbers right. So Ross, maybe you can borrow some of Chris' code :-) Unfortunately zdb doesn't appear to work with zope 2.9 / python 2.4. I'll file a bug report with Chris. It works great with zope 2.8 / python 2.3. -- Paul Winkler http://www.slinkp.com
I've only just tried PDBDebugMode, very handy since you don't have to put set_trace() in your code (and remember to remove it).
Glad you like it :)
I have also sometimes used Chris Withers' "zdb" product, http://www.simplistix.co.uk/software/zope/zdb, which has some overlap in that it allows you to do this in restricted code, e.g. cmf scripts:
from Products.zdb import set_trace set_trace()
... and, very usefully, once in the debugger you can use the "l" command to see the script source and it gets line numbers right. So Ross, maybe
Oooh! I'd love that. I'll look into it. You should really try using a editor/IDE that automatically shows the corresponding code along side the debugger, like Emacs' gud-mode which can be invoked with "M-x pdb". It rocks! Thanks for the suggestion! Ross
On Tue, Mar 14, 2006 at 01:07:48PM -0800, Ross Patterson wrote:
Oooh! I'd love that. I'll look into it.
You should really try using a editor/IDE that automatically shows the corresponding code along side the debugger, like Emacs' gud-mode which can be invoked with "M-x pdb". It rocks!
I do that sometimes, but I lack sufficient wizardry to make it work with through-the-web scripts :-) But then, I don't write many of those anymore. All hail Ken Manheimer, pdbtrack is very cool. -- Paul Winkler http://www.slinkp.com
Simon Michael wrote:
Also hail Ross and hail Chris. I didn't know about that trick for debugging restricted code with source.
Damn, I need to get better visibility for the tools I write :-S What am I doing wrong? I'm astounded that more people don't using MailingLogger, given the huge number of previously unknown errors it's helped me find. There's also MailTemplates, which is great for sending mail from Zope, especially when you have to send file attachments from a python script, for example, which is a 2 liner ;-) Oh, and lets not forget Stepper, which is _great_ for doing batch jobs and migrations when you're running with ZEO, which everyone should be! I guess everyone knows about SimpleUserFolder? Not many people would have a need for X2Y, but it's pretty handy for big batch document conversions/virus scanning/etc... Okay, that's me done soapboxing for now :-D Chris
You should really try using a editor/IDE that automatically shows the corresponding code along side the debugger, like Emacs' gud-mode which can be invoked with "M-x pdb". It rocks!
I do that sometimes, but I lack sufficient wizardry to make it work with through-the-web scripts :-) But then, I don't write many of those anymore.
Put this in your .emacs: (defvar gud-pdb-marker-regexp "^> \\(.*\\)(\\([0-9]+\\))\\([a-zA-Z0-9_<>]*\\|\\?\\)()\\(->[^\n]*\\)?\n") That should do it :) Ross
participants (5)
-
Chris Withers -
Paul Winkler -
Ross Patterson -
Simon Michael -
Tres Seaver