Hi Patrick,
I'm in the process of looking into this for you. As you mentioned, the
traceback module (e.g. traceback.print_exc()) is the way to go, and it should
work in 2.6. Which version of IronPython are you using?
As a temporary workaround, you can use the sys module to get most of the same
functionality; traceback.py is essentially just a pretty-printer for the
information provided by sys.exc_info. For example, to print the stack trace to
stderr, you can mimic the interpreter:
import sys
try:
<bugged code>
except:
sys.excepthook(*sys.except_info())
To load a string as its own module, it is necessary to mimic the behavior of
the importer, except that the code is already in memory. You'll want something
akin to the following helper function:
import imp
def import_string(modulename, filename, source):
code_obj = compile(source, filename, 'exec')
scope = imp.new_module(modulename)
exec(code_obj, scope.__dict__)
return scope
This should provide the proper filename/lineno debugging information, for
example:
>>> my_module = import_string('my_module ', '<my_package.zip>\\my_module.py ',
>>> '\n\n\ndef err():\n raise SystemError\n\n')
>>> my_module.err()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<my_package.zip>\my_module.py ", line 5, in err
SystemError
Best of luck!
- David
From: [email protected]
[mailto:[email protected]] On Behalf Of Patrick DeschĂȘnes
Sent: Wednesday, June 03, 2009 10:59 AM
To: [email protected]
Subject: [IronPython] Debugging IronPython scripts + simulate a filename when
loading a string
Hi,
I'm currently using IronPython to develop extensions to my program. My python
scripts are compressed in a zip file along with other resources.
Everything works fine but I would be very happy if I could find a simple way to
debug my scripts. I don't want anything complex for now. If I could only do
something like this :
try:
bugged code
except:
print debug.stack.filename + " : " debug.stack.lineno
It would be perfect. I looked for the traceback module but it doesn't seems to
work with IronPython. Also, since I load my script from a zip file, is there a
way to
simulate a filename when loading a string.
So, if I could :
a) load a string as if it was a file
b) intercept the filename/linenum in the catch block
That would be a huge improvement.
- Patrick
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com