| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
September 26, 2014 Can I get caller name? | ||||
|---|---|---|---|---|
| ||||
for debugging purposes, I need to get the caller name. Is it possible? if so, how do I do this?
void foo()
{
baa();
}
void baa()
{
wrilten(caller_name()); // foo
}
I know I could create an extra parameter and pass the current function name as argument but it isn't a possibility for now.
| ||||
September 26, 2014 Re: Can I get caller name? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to AsmMan Attachments: | On Fri, 26 Sep 2014 05:59:32 +0000 AsmMan via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > for debugging purposes, I need to get the caller name. Is it possible? if so, how do I do this? use debugger? or parse debugging info and do stackwalk. | |||
September 26, 2014 Re: Can I get caller name? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to AsmMan | On Friday, 26 September 2014 at 05:59:33 UTC, AsmMan wrote: > for debugging purposes, I need to get the caller name. Is it possible? if so, how do I do this? > > void foo() > { > baa(); > } > > void baa() > { > wrilten(caller_name()); // foo > } > > I know I could create an extra parameter and pass the current function name as argument but it isn't a possibility for now. Method 1 (extra template parameter): ////////////// method1.d ///////////// import std.stdio; void foo() { baa(); } void baa(string caller=__FUNCTION__)() { writeln(caller); } void main() { foo(); } ////////////////////////////////////// Method 2 (slow, needs -g, also prints line number on Windows): /////////////////////////// method2.d /////////////////////////// import std.stdio; void foo() { baa(); } void baa() { writeln(getCaller()); } void main() { foo(); } string getCaller() { try throw new Exception(null); catch (Exception e) { import std.string, std.algorithm; string[] lines = e.toString().splitLines()[1..$]; return lines.find!(line => line.canFind("getCaller"))[2]; } } ///////////////////////////////////////////////////////////////// | |||
September 26, 2014 Re: Can I get caller name? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | Thanks guys! | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply