On Fri, Jun 7, 2013 at 12:39 AM, nazriel <[email protected]> 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"
