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