Having a proper debugging support of D programs on linux/OSX/windows should be a top priority, as it makes bug fixing really hard.
I also spent some time with zerobugs route. It looks like a dead end and its developer will most likely not put more effort into it.
Here's what I have:
A) default stacktraces on linux (ubuntu, if that matters): (dmd -g test_hello.d which has an assert(0);){
no function name, no file, no line numbers:
core.exception.AssertError@tests.test_hello(6): Assertion failure
----------------
filename() [0x40fc16]
filename() [0x40d86d]
...
}
B) default stacktraces on OSX{
function name, but no file and no line numbers
core.exception.AssertError@tests.test_hello(9): Assertion failure
----------------
5 test 0x000000010f6305a6 _d_assertm + 38
6 test 0x000000010f61204a void tests.test_hello.__assert(int) + 26
7 test 0x000000010f612016 _Dmain + 42
8 test 0x000000010f630e95 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain() + 33
...
}
C) stacktraces on OSX with some modifications I did involving wrapping atos, etc: {
shows function name, full file, line numbers, and catches segfaults.}
0 file: exception.d:356 pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)
1 file: path/som_file.d:100 void util.some_function(int x)
...
Some problems:
in case of segfault, the very latest stack frame is missing (so we only have the parent of the parent of the function that caused the segfault, plus anything older).
in some rare cases we only have the file name but no file path information.
* requires to be run with sudo or code-signing* doesn't show file/line numbers; function names appear mangled, eg:#1 0x000000010000104a in D5tests10test_hello8__assertFiZv ()