Debugging with gdb on Posix but setAssertHandler is deprecated

Jens Mueller jens.k.mueller at gmx.de
Sun Nov 21 12:52:40 PST 2010


Sean Kelly wrote:
> Jens Mueller <jens.k.mueller at gmx.de> wrote:
> > Hi,
> > 
> > I've written a small module for debugging on Posix systems.
> > It uses raise(SIGTRAP) and a custom errorHandlerType with
> > setAssertHandler. But setAssertHandler is deprecated.
> > Why is it deprecated? How should I do it instead?
> > 
> > I want to do it generally for Error and Exception. Don't know how yet.
> > How do you debug your programs? I've read that gdb has catch throw for
> > C++ to break when exceptions are thrown. I don't like changing gdb for
> > this.
> > My idea is that instead of throwing an Error/Exception I print it and
> > then raise SIGTRAP.
> 
> It's deprecated because DMD doesn't generate a valid call stack when
> generating an assert, so if you try to return from the assert handler
> instead of throwing the app will crash.

Thanks.
That explains my segmentation fault. Is there going to be an alternative
way of doing it? Shouldn't one fix the problem in dmd instead of
deprecating the handler? In the meantime I will try using gdb reverse
debugging.

Jens


More information about the Digitalmars-d mailing list