Thread overview |
---|
March 05, 2010 Stack tracing assert for linux/D2 | ||||
---|---|---|---|---|
| ||||
I just created a module that generates stack traces on asserts (D2): http://www.dsource.org/projects/scrapple/browser/trunk/backtrace_assert/debugging.d Just compile and link it. It does have some not exactly ideal bits: -it won't work nicely unless you link with gcc and add the -rdynamic flag. -accessing some of the posix stuff fubared my link (unresolved ModuleInfos) so I had to add the prototypes directly (yuck) -it uses the c function dprintf that on some system does what I want (print to a low level file stream) and on some system does something totaly different. -it has the expected executable name and the location of addr2line hard coded (any ideas on how to fix these issues welcomed) -- ... <IXOYE>< |
March 05, 2010 Re: Stack tracing assert for linux/D2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS | BCS wrote: > I just created a module that generates stack traces on asserts (D2): > > http://www.dsource.org/projects/scrapple/browser/trunk/backtrace_assert/debugging.d > > > Just compile and link it. > > It does have some not exactly ideal bits: > > -it won't work nicely unless you link with gcc and add the -rdynamic flag. > -accessing some of the posix stuff fubared my link (unresolved ModuleInfos) so I had to add the prototypes directly (yuck) > -it uses the c function dprintf that on some system does what I want (print to a low level file stream) and on some system does something totaly different. > -it has the expected executable name and the location of addr2line hard coded > > (any ideas on how to fix these issues welcomed) > that would be great if i manage to make it work.... for now i get: /usr/bin/ld: optind: TLS definition in [...]/crosa/xfbuild/debug/core-sys-posix-unistd.o section .tbss mismatches non-TLS definition in /lib/libc.so.6 section .data /lib/libc.so.6: could not read symbols: Bad value collect2: ld returned 1 exit status I am using xfbuild, so i have to pass -L-export-dynamic instead of "-rdynamic. I also have to use your hardcoded declarations, as some of them "backtrace..." seem not to be in the druntime source. But i am still fairly new with d, so i might have screwed anywhere else. j. |
March 05, 2010 Re: Stack tracing assert for linux/D2 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jordi | Hello Jordi, > BCS wrote: > >> I just created a module that generates stack traces on asserts (D2): >> >> http://www.dsource.org/projects/scrapple/browser/trunk/backtrace_asse >> rt/debugging.d >> >> Just compile and link it. >> >> It does have some not exactly ideal bits: >> >> -it won't work nicely unless you link with gcc and add the -rdynamic >> flag. >> -accessing some of the posix stuff fubared my link (unresolved >> ModuleInfos) so I had to add the prototypes directly (yuck) >> -it uses the c function dprintf that on some system does what I want >> (print to a low level file stream) and on some system does something >> totaly different. >> -it has the expected executable name and the location of addr2line >> hard >> coded >> (any ideas on how to fix these issues welcomed) >> > that would be great if i manage to make it work.... for now i get: > > /usr/bin/ld: optind: TLS definition in > [...]/crosa/xfbuild/debug/core-sys-posix-unistd.o section .tbss > mismatches non-TLS definition in /lib/libc.so.6 section .data > /lib/libc.so.6: could not read symbols: Bad value > collect2: ld returned 1 exit status Taking a wild stab, try not linking in core-sys-posix-unistd.o (I got a different error trying to include it) either by mucking with the link command or by convincing your build that it's just prototypes for a library. > I am using xfbuild, so i have to pass -L-export-dynamic instead of > "-rdynamic. I'm not sure backtrace is even officially part of posix and I don't think it's ever been part of phobos. It's the posix function/enum from core.sys.posix that were causing me problems. -- ... <IXOYE>< |
Copyright © 1999-2021 by the D Language Foundation