On Tue, 13 Jul 2010 02:26:22 -0400, Graham St Jack <[email protected]> wrote:

I have jumped back onto the D2 band-wagon after a long absence, read
Andrei's book, and am having a great time cutting heaps of D code. My
increase in productivity and happiness when compared to working in C++ is
enormous.

Bug thumbs up to everyone involved with D2, Phobos and the book.

One area I am having a bit of trouble with is debugging. Can anyone help
me out with how to debug a D2 program in Linux? Currently I am reduced to
printing out heaps of debug text.

Specifically:

Stack Trace:
------------

I can't get the D2 stack-trace to work properly. All I get is something
like this, which isn't helpful:

Segmentation fault

The code I used to generate this was:
import std.stdio;
import std.file;
void foo(File file) {
    file.flush;
}
void main(string[] args) {
    File file;
    foo(file);
}
Is stack-trace support broken, or do I have to do something to enable it?

Seg faults do not generate stack traces in Linux/MacOS. This is because a segmentation fault is generated by a signal, and it's unsafe to throw exceptions from signals.

I believe seg faults can generate exceptions in Windows, but I'm not sure.

Your best bet is to get a debugger working, and it will halt on the signal. As I understand it, a lot of good work was done recently on dmd (can't remember who did it) to get it working better with gdb.

-Steve

Reply via email to