Thread overview | ||||||
---|---|---|---|---|---|---|
|
September 01, 2014 Query Parser Callstack | ||||
---|---|---|---|---|
| ||||
Are there some nice traits or internals to query the current call stack for address or perhaps even their (mangled) names. I'm mostly interested in using this to detect infinite recursions in my recursive descent parser. This provided that my parser slice hasn't changed since last call to the same function. |
September 02, 2014 Re: Query Parser Callstack | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | You can try to create an exception and get stack trace from it. The functionality is in druntime. |
September 02, 2014 Re: Query Parser Callstack | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | On Monday, 1 September 2014 at 21:00:46 UTC, Nordlöw wrote:
> Are there some nice traits or internals to query the current call stack for address or perhaps even their (mangled) names. I'm mostly interested in using this to detect infinite recursions in my recursive descent parser. This provided that my parser slice hasn't changed since last call to the same function.
I've no idea how it is used but '_d_traceContext' might be of use:
import std.stdio;
int foo(int n)
{
writefln("&foo: 0x%X", &foo);
writefln("%s", _d_traceContext(&foo));
return n;
}
extern(C) Throwable.TraceInfo _d_traceContext(void* ptr = null);
void main(string[] args)
{
auto x = foo(100);
}
Found in object_.d in the druntime repo.
|
September 02, 2014 Re: Query Parser Callstack | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gary Willoughby | On Tuesday, 2 September 2014 at 18:10:19 UTC, Gary Willoughby wrote: > I've no idea how it is used but '_d_traceContext' might be of use: Ok, thanks. I just realized that http://code.dlang.org/packages/backtrace-d might be of use here aswell. |
Copyright © 1999-2021 by the D Language Foundation