BetterC stack traces?

Paul Backus snarwin at gmail.com
Mon Sep 5 12:35:10 UTC 2022


On Monday, 5 September 2022 at 12:07:35 UTC, Paul Backus wrote:
> On Monday, 5 September 2022 at 10:47:38 UTC, IchorDev wrote:
>> Ah, I'm actually trying to create my own implementation of 
>> this, so the goal would be to not rely on a dependency.
>> I can't exactly make head nor tail of the library's source 
>> other than that it seems to have a unique implementation on 
>> each processor/OS type.
>>
>> I'm sure there must be something hidden in `core.internal.` 
>> for this. I'll look at the implementation of `rt.trace` and 
>> see if I can find anything.
>
> I think this is what you are looking for:
>
> https://github.com/dlang/dmd/blob/master/druntime/src/rt/deh.d

Digging in a little deeper, it looks like the druntime 
implementation ultimately depends on the [C++ exception handling 
ABI][1], via its platform-independent library interface. Bindings 
are defined in [`core.internal.backtrace.unwind`][2].

There is also what looks like a from-scratch implementation of 
table-based exception handling in [`rt.deh_win64_posix`][3], but 
according to a comment it is no longer used. Might be educational 
to read, though.

[1]: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html
[2]: 
https://github.com/dlang/dmd/blob/master/druntime/src/core/internal/backtrace/unwind.d
[3]: 
https://github.com/dlang/dmd/blob/master/druntime/src/rt/deh_win64_posix.d


More information about the Digitalmars-d-learn mailing list