helpful runtime error messages

Jonathan M Davis jmdavisProg at gmx.com
Tue Dec 14 10:13:03 PST 2010


On Tuesday, December 14, 2010 09:48:14 spir wrote:
> Hello,
> 
> 
> Am I the only one who gets, as only kind of runtime errors, spectacularly
> helpful messages like:
> 
> int f () {return 0;}
> void main () {
>     assert (f() == 1);
> }
> ==>
> spir at o:~/prog/d/Text$ ./__trials__
> core.exception.AssertError at __trials__(44): Assertion failure
> ----------------
> ./__trials__() [0x804bb86]
> ./__trials__() [0x8049642]
> ./__trials__() [0x804960b]
> ./__trials__() [0x804bd76]
> ./__trials__() [0x804bcd0]
> ./__trials__() [0x804bdba]
> ./__trials__() [0x804bcd0]
> ./__trials__() [0x804bc76]
> /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6) [0x292bd6]
> 
> Thankfully, D is a static language, so that I have rather few runtime
> errors. But what am I missing to get a stack trace? Sometimes, I don't
> even have the (last) faulty line of code (dunno why).

On Linux, I believe that you need to compile with -L--export-dynamic. I think 
that that's supposed to be in the version of dmd.conf that comes with the most 
recent version of dmd, so it should work out of the box (though if you're using 
an older dmd.conf, then it would be missing). IIRC, stack traces don't work 
properly on Windows yet (though I don't know exactly what's going on there), so 
I believe that you're currently out of luck on Windows. However, what you're 
showing there looks like what you get on Linux if you don't build with -L--
export-dynamic, so I'm guessing that that's your problem.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list