X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=ce9f4f4a973af1b1559c93fadecc345b25cfb751;hb=c6d8c2d23585e1b364f4304bfe2501c4ac247c56;hp=5970b6cc81aab9e4afcd145f04b3f0cf8a5c2331;hpb=c846e77a848d60dd115f00faa0d9a854161d99eb;p=dak.git diff --git a/utils.py b/utils.py index 5970b6cc..ce9f4f4a 100644 --- a/utils.py +++ b/utils.py @@ -2,7 +2,7 @@ # Utility functions # Copyright (C) 2000, 2001, 2002 James Troup -# $Id: utils.py,v 1.51 2002-10-16 02:47:32 troup Exp $ +# $Id: utils.py,v 1.52 2002-11-22 04:06:34 troup Exp $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ ################################################################################ -import commands, os, pwd, re, socket, shutil, string, sys, tempfile; +import commands, os, pwd, re, socket, shutil, string, sys, tempfile, traceback; import apt_pkg; import db_access; @@ -616,6 +616,33 @@ def parse_args(Options): ################################################################################ +# Inspired(tm) by Bryn Keller's print_exc_plus (See +# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52215) + +def print_exc(): + tb = sys.exc_info()[2]; + while tb.tb_next: + tb = tb.tb_next; + stack = []; + frame = tb.tb_frame; + while frame: + stack.append(frame); + frame = frame.f_back; + stack.reverse(); + traceback.print_exc(); + for frame in stack: + print "\nFrame %s in %s at line %s" % (frame.f_code.co_name, + frame.f_code.co_filename, + frame.f_lineno); + for key, value in frame.f_locals.items(): + print "\t%20s = " % key,; + try: + print value; + except: + print ""; + +################################################################################ + apt_pkg.init() Cnf = apt_pkg.newConfiguration();