Update README

This commit is contained in:
Jeremy 2023-11-08 13:03:05 -05:00
parent f21874cbf7
commit f4cf8c198b
No known key found for this signature in database
GPG Key ID: B4C8300FEC395042

View File

@ -560,12 +560,21 @@ To static link the library set `-DCPPTRACE_STATIC=On`.
## Library Internals ## Library Internals
Cpptrace supports a number of back-ends and middle-ends to produce stack traces. Stack traces are produced in roughly Cpptrace supports a number of back-ends to produce stack traces. Stack traces are produced in roughly three steps:
three steps: Unwinding, symbol resolution, and demangling. Cpptrace by default on linux / macos will generate traces Unwinding, symbol resolution, and demangling.
with `_Unwind_Backtrace`, libdwarf, and `__cxa_demangle`. On windows traces are generated by default with `StackWalk64`
and dbghelp.h (no demangling is needed with dbghelp). Under mingw libdwarf and dbghelp.h are used, along with The library's CMake automatically configures itself for what your system supports. The ideal configuration is as
`__cxa_demangle`. Support for these is the main focus of cpptrace and they should work well. If you want to use a follows:
different back-end such as addr2line, however, you can configure the library to do so.
| Platform | Unwinding | Symbols | Demangling |
| -------- | ------------- | ------------------ | -------------------- |
| Linux | `_Unwind` | libdwarf | cxxabi.h |
| MacOS | `_Unwind` | libdwarf | cxxabi.h |
| Windows | `StackWalk64` | dbghelp | No demangling needed |
| MinGW | `StackWalk64` | libdwarf + dbghelp | cxxabi.h |
Support for these back-ends is the main development focus and they should work well. If you want to use a different
back-end such as addr2line, for example, you can configure the library to do so.
**Unwinding** **Unwinding**