[OT] Which IDE / Editor do you use?

H. S. Teoh hsteoh at quickfur.ath.cx
Sat Sep 14 10:46:03 PDT 2013


On Sat, Sep 14, 2013 at 07:34:26PM +0200, Adam D. Ruppe wrote:
> On Saturday, 14 September 2013 at 12:25:44 UTC, Paolo Invernizzi
> wrote:
> >Give me a way to writeln the callstack frames at a certain
> 
> Challenge accepted:
> 
> 
> import std.stdio;
> 
> string getStackTrace() {
>          import core.runtime;
> 
>          version(Posix) {
>                  // druntime cuts out the first few functions on the trace as they are internal
>                  // so we'll make some dummy functions here so our actual info doesn't get cut
>                  Throwable.TraceInfo f5() { return defaultTraceHandler(); }
>                  Throwable.TraceInfo f4() { return f5(); }
>                  Throwable.TraceInfo f3() { return f4(); }
>                  Throwable.TraceInfo f2() { return f3(); }
>                  auto stuff = f2();
>          } else {
>                  auto stuff = defaultTraceHandler();
>          }
> 
>          return stuff.toString();
> }
> 
> 
> void foo() {
>          writeln("on foo");
>          bar();
> }
> 
> void bar() {
>          writeln("on bar");
>          omg();
> }
> 
> void omg() {
>          writeln("on omg");
> 
>          writeln(getStackTrace());
> }
> 
> void main() {
>          omg();
> 
>          writeln("\n****\n");
>          foo();
> }

Whoa.

My hats off to you, sir!!

(And yes, I did actually test this code with a few call trees of my own.
It really does work! Amazing.)

I'm gonna put this into my personal D library, right now!


T

-- 
Recently, our IT department hired a bug-fix engineer. He used to work for Volkswagen.


More information about the Digitalmars-d mailing list