www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 14885] New: ideas for prettier and more useful backtraces

https://issues.dlang.org/show_bug.cgi?id=14885

          Issue ID: 14885
           Summary: ideas for prettier and more useful backtraces
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: druntime
          Assignee: nobody puremagic.com
          Reporter: code dawg.eu

Some trivial to implement ideas to make backtraces more useful.

Turn backtraces upside down.
Often one get's a long backtrace on the console and has to scroll up skipping
all the internal/framework frames to find the actual function that threw an
exception and see the error message.

It would be a lot easier if the backtrace was from top to bottom with the
message below that.

----
std.conv.ConvException /usr/include/dmd/phobos/std/conv.d(2013): Unexpected end
of input when converting from type string to type int
----------------
./bug(pure  safe int std.conv.toImpl!(int,
immutable(char)[]).toImpl(immutable(char)[])+0x26) [0x42bdae]
./bug(pure  safe int
std.conv.to!(int).to!(immutable(char)[]).to(immutable(char)[])+0x20) [0x42ba88]
./bug(_Dmain+0x1a) [0x42ba62]
./bug(_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv+0x1f)
[0x42de27]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate())+0x2a) [0x42dd82]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).runAll()+0x2b) [0x42dde3]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate())+0x2a) [0x42dd82]
./bug(_d_run_main+0x1d2) [0x42dd02]
./bug(main+0x12) [0x42bec2]
/lib64/libc.so.6(__libc_start_main+0xf0) [0x7f0f30c17fe0]
----
vs.
----
/lib64/libc.so.6(__libc_start_main+0xf0) [0x7f0f30c17fe0]
./bug(main+0x12) [0x42bec2]
./bug(_d_run_main+0x1d2) [0x42dd02]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate())+0x2a) [0x42dd82]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).runAll()+0x2b) [0x42dde3]
./bug(void rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).tryExec(scope void delegate())+0x2a) [0x42dd82]
./bug(_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv+0x1f)
[0x42de27]
./bug(_Dmain+0x1a) [0x42ba62]
./bug(pure  safe int
std.conv.to!(int).to!(immutable(char)[]).to(immutable(char)[])+0x20) [0x42ba88]
./bug(pure  safe int std.conv.toImpl!(int,
immutable(char)[]).toImpl(immutable(char)[])+0x26) [0x42bdae]
----------------
std.conv.ConvException /usr/include/dmd/phobos/std/conv.d(2013): Unexpected end
of input when converting from type string to type int
----

--
Aug 07 2015