Forum: Ruby-core [CommonRuby - Feature #8661][Open] Add option to print backstrace in reverse order(stack frames firs

761edb9c3cf7a0a643e73ef40666a1f7?d=identicon&s=25 gary4gar (Gaurish Sharma) (Guest)
on 2013-07-20 22:20
(Received via mailing list)
Issue #8661 has been reported by gary4gar (Gaurish Sharma).

----------------------------------------
Feature #8661: Add option to print backstrace in reverse order(stack
frames first & error last)
https://bugs.ruby-lang.org/issues/8661

Author: gary4gar (Gaurish Sharma)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:


Currently the way ruby prints the backtrace is that the error comes
first & then the stack frames. like this

  Main Error Message
stack frame 1
stack frame 2
stack frame 3
.....

 this is perfectly fine provided

1. Backstraces are short, so fits in terminal.hence, no need to scroll.
2. you read it from top to bottom.


But, I am a rails developer where

1. Backstraces are always HUGE, therefore seldom don't fit in terminal.
Means LOTS of scrolling to do everytime we get an error.
2. in terminal we tend to read backstraces from bottom to top,
especially when tailing(tail -f) the production logs.
3. people, who practice Test-driven development literally spend most of
their time scrolling to read backstraces to the point most end up buying
a larger display.

Proposed Solution:
 Please add a way so we can configure backstraces to be printed in
reverse order. so if you are reading from bottom, say from terminal, you
can get the main error message without need to scroll. like this



stack frame 3
stack frame 2
stack frame 1
 Main Error Message
.....

this would save lot of time because when the error message is print at
the bottom, no need to scroll for reading it. Not sure if this can be
done today. I tried Overriding Exception#backtrace but it caused stack
level too deep & illegal hardware instruction Error.

Attached are currently what backstrace currently looks like & how there
be an option to make it look for comparison.
E8a419959139f3f505b49bb95f7e7afe?d=identicon&s=25 Joshua Ballanco (jballanc)
on 2013-07-22 21:56
(Received via mailing list)
You can already accomplish something like this yourself:

    begin
      raise "Hello!"
    rescue Exception => e
      puts e.backtrace.reverse.join("\n")
      puts e.message
    end

Simple!


On Sat, Jul 20, 2013 at 11:20 PM, gary4gar (Gaurish Sharma) <
F1d6cc2b735bfd82c8773172da2aeab9?d=identicon&s=25 Nobuyoshi Nakada (nobu)
on 2013-07-23 04:09
(Received via mailing list)
(13/07/23 4:56), Joshua Ballanco wrote:
> You can already accomplish something like this yourself:
>
>     begin
>       raise "Hello!"
>     rescue Exception => e
>       puts e.backtrace.reverse.join("\n")

You don't need to join.
This topic is locked and can not be replied to.