[IronPython] Traceback Objects?

Mark Rees mark.john.rees at gmail.com
Tue Sep 5 10:24:34 CEST 2006


Was hoping someone with more knowledge would answer your question but
think theres been a holiday in the US. I cannot say if IP behaves the
same as CPython in this case, but I was going to say that using the
the standard traceback module allows printing of the stack. Even one
of the IP team said it in a email:
>----------
>From: Dino Viehland
>Sent: Wednesday, July 12, 2006 11:54 AM
>To: Discussion of IronPython
>Subject: Re: [IronPython] Getting a call stack from an exception?
>
>Tracebacks are the correct way to do this, I recommend you install
the standard Python library against IronPython to make this really
useful – then you can do import traceback and use its handy functions
(otherwise you'll be walking the traceback list in sys.exc_info()
which won't be much fun).
>

But running this code:

import sys, traceback
def test():
  try:
    raise Exception()
  except:
    print traceback.format_exc()
    print traceback.print_stack()


test()

I got this:

'NoneType' object has no attribute 'tb_frame'
   at IronPython.Runtime.Types.DynamicType.GetAttr(ICallerContext context, Objec
t self, SymbolId name)
   at IronPython.Runtime.Operations.Ops.GetAttr(ICallerContext context, Object o
, SymbolId name)
   at traceback.print_stack$f14(Object f, Object limit, Object file) in E:\Pytho
n24\Lib\traceback.py:line 246
   at IronPython.Runtime.Calls.Function3.Call(ICallerContext context)
   at IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context,
Object func)
   at test$f159##120(ModuleScope )
   at IronPython.Runtime.Calls.CallTarget0.Invoke()
   at IronPython.Runtime.Calls.Function0.Call(ICallerContext context)
   at IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context,
Object func)
   at <stdin>##121(ModuleScope )
   at IronPython.Hosting.CompiledCodeDelegate.Invoke(ModuleScope moduleScope)
   at IronPython.Hosting.CompiledCode.Run(ModuleScope moduleScope)
   at IronPython.Hosting.PythonEngine.ExecuteToConsole(String text, EngineModule
 engineModule, IDictionary`2 locals)
   at IronPython.Hosting.PythonEngine.ExecuteToConsole(String text)
   at IronPythonConsole.PythonCommandLine.DoOneInteractive()
   at IronPythonConsole.PythonCommandLine.<RunInteractiveLoop>b__6(Boolean& cont
inueInteractionArgument)
   at IronPythonConsole.PythonCommandLine.TryInteractiveAction(InteractiveAction
 interactiveAction, Boolean& continueInteraction)
AttributeError: 'NoneType' object has no attribute 'tb_frame'

So maybe it is a bug, or you can use traceback for simple things but
not printing the stack or maybe it only affects Australians like you
and me.

Regards

Mark
On 9/5/06, Gary Stephenson <garys at ihug.com.au> wrote:
> My third attempt at asking this question (as the previous two went through
> to the 'keeper) ...
>
> Is the following considered a bug in IronPython, or am I doing something
> wrong?
>
>  import sys
>
>  def test():
>    try:
>        raise Exception()
>    except Exception, oErr:
>        print sys.exc_info()[2]       # None in ipy, traceback object in
> CPython
>        print sys.exc_traceback    #  ditto..
>
>  test()
>
> Regardless of the answer to the previous question, a printout of a stack
> trace does currently occur on an unhandled exception.  Other than
> redirecting stderr (which I _assume_ would work), is there an easy way of
> logging the traceback message to a file?
>
> Apologies if I am asking unwelcome nooby questions.  Should I perhaps be
> asking on another forum, and if so, which?
>
> thanks in advance,
>
> gary
>
> _______________________________________________
> users mailing list
> users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>



More information about the Ironpython-users mailing list