geting stack trace from signal handlers

Timothee Cour thelastmammoth at gmail.com
Fri Jun 7 03:23:41 PDT 2013


On Fri, Jun 7, 2013 at 12:39 AM, nazriel <spam at dzfl.pl> wrote:

> On Thursday, 6 June 2013 at 21:50:58 UTC, Timothee Cour wrote:
>
>> Great!
>> two issues (on OSX at least):
>>
>> A)
>> it seems the top-most element of the call stack gets chopped off; eg in
>> your code, the main_module.main symbol will not appear in the stack trace.
>> Any idea why or how to fix that?
>> Is that some inlining issue ? I tried with dmd -g, or -gs or -gc.
>> This can be annoying when the top-most function is a large function and
>> it's not at all clear where the code stopped.
>>
>>  I haven't got Mac OSX to test it out but I fixed it a little bit so it
> is less hacky:
>
> http://dpaste.dzfl.pl/241c6fb5
>

Thanks, ya, the demangling part is the easy part :) (although demangle is
still incomplete in many cases...)



> Compiler switches you may want to consider are:
> -gc -L--export-dynamic -O0


export-dynamic or rdynamic are not available on OSX.
-gc doesn't change anything on dmd (and -O0 isn't available on dmd)
-gc -O0 doesn't change anything on ldc



>
>
>  B)
>> there are no line numbers. I did a complex workaround by launching a
>> process and calling atos to get those, but isn't there a better way?
>>
>>  Yeah, it is a complex issue. There are 2 ways to fix it from what I know.
> 1) pipe addresses to addr2line - easier
>

OSX doesn't have addr2line, hence my solution based on piping to atos on
OSX. It works except in a few cases where for some reason only the basename
of the file is shown instead of full file path, but its a bit complex so i
was hoping for simpler.



> 2) use libdwarf - more complex but also more out-of-box solution


Thanks for the link, that sounds promising! Will look at it.
under doc:
http://sourceforge.net/apps/trac/elftoolchain/wiki/libdwarf
relevant sections:
"Line Number Operations"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20130607/a2121721/attachment.html>


More information about the Digitalmars-d-learn mailing list