#161 Pretty stack traces

brian Mon 3 Dec 2007

Based on a conversation with Andy last week, I did a little work to pretty up the Fan based stack traces:

  • use Fan qname instead of Java signatures
  • make closure synthetic types look like their containing method
  • distinguish b/w Fan and Java (right now I prefix Java with tilde - opinions?)
  • cap trace depth to 20
  • recursively trace cause

Andy, I've codified the format in ErrTest - so you'll need to make .NET match.

Let me know what you guys think.

Here is an example of what a stack trace now looks like:

sys::Err: foo
  sysTest::ErrTest.testTrace (ErrTest.fan:43)
  sysTest::ErrTest.c (ErrTest.fan:35)
  sysTest::ErrTest.b (ErrTest.fan:34)
  sysTest::ErrTest.a (ErrTest.fan :33)
  sysTest::ErrTest.verifyTrace (ErrTest.fan:49)
  sysTest::ErrTest.testTrace (ErrTest.fan:43)
  ~ sun.reflect.NativeMethodAccessorImpl.invoke0 (Unknown)
  ~ sun.reflect.NativeMethodAccessorImpl.invoke (Unknown)
  ~ sun.reflect.DelegatingMethodAccessorImpl.invoke (Unknown)
  ~ java.lang.reflect.Method.invoke (Unknown)
  More...
Cause:
  sys::Err: cause
    sysTest::ErrTest.testTrace (ErrTest.fan:43)
    sysTest::ErrTest.c (ErrTest.fan:35)
    sysTest::ErrTest.b ( ErrTest.fan:34)
    sysTest::ErrTest.a (ErrTest.fan:33)
    sysTest::ErrTest.verifyTrace (ErrTest.fan:49)
    sysTest::ErrTest.testTrace (ErrTest.fan:43)
    ~ sun.reflect.NativeMethodAccessorImpl.invoke0 (Unknown)
    ~ sun.reflect.NativeMethodAccessorImpl.invoke (Unknown)
    ~ sun.reflect.DelegatingMethodAccessorImpl.invoke (Unknown)
    More...

brian Mon 14 Apr 2008

We've since gotten rid of the ~ and mix Java/Fan lines together.

Login or Signup to reply.