README fixes and updates

This commit is contained in:
Jeremy 2023-09-22 10:07:51 -04:00
parent b583f021b8
commit 7aa89296a1
No known key found for this signature in database
GPG Key ID: 3E11861CB34E158C

View File

@ -39,7 +39,7 @@ MinGW and Cygwin environments. The goal: Make stack traces simple for once.
# 30-Second Overview # 30-Second Overview
Generating traces is as easy as calling `cpptrace::print_trace`: Generating traces is as easy as:
```cpp ```cpp
#include <cpptrace/cpptrace.hpp> #include <cpptrace/cpptrace.hpp>
@ -107,8 +107,8 @@ On windows and macos some extra work is required, see [below](#platform-logistic
## `namespace cpptrace` ## `namespace cpptrace`
`cpptrace::generate_trace()` can used to generate a stacktrace object at the current call site. Resolved frames can be `cpptrace::generate_trace()` can be used to generate a stacktrace object at the current call site. Resolved frames can
accessed from this object with `.frames` and also the trace can be printed with `.print()`. Cpptrace also provides a be accessed from this object with `.frames` and also the trace can be printed with `.print()`. Cpptrace also provides a
method to get lightweight raw traces, which are just vectors of program counters, which can be resolved at a later time. method to get lightweight raw traces, which are just vectors of program counters, which can be resolved at a later time.
**Note:** Debug info (`-g`/`/Z7`/`/Zi`/`/DEBUG`) is generally required for good trace information. **Note:** Debug info (`-g`/`/Z7`/`/Zi`/`/DEBUG`) is generally required for good trace information.
@ -299,8 +299,8 @@ A couple things I'd like to fix in the future:
### FAQ: What about C++23 `<stacktrace>`? ### FAQ: What about C++23 `<stacktrace>`?
Some day C++23's `<stacktrace>` will be ubiquitous. And maybe one day the msvc implementation will be acceptable. Some day C++23's `<stacktrace>` will be ubiquitous. And maybe one day the msvc implementation will be acceptable.
The main motivation for this library was The original motivation for cpptrace was to support projects using older C++ The original motivation for cpptrace was to support projects using older C++ standards and as the library has grown its
standards and as the library has grown its functionality has extended beyond the standard library's implementation. functionality has extended beyond the standard library's implementation.
Plenty of additional functionality is planned too, such as stack tracing from signal handlers, stack tracing other Plenty of additional functionality is planned too, such as stack tracing from signal handlers, stack tracing other
threads, and generating lightweight stack traces on embedded devices that can be resolved either on embedded or on threads, and generating lightweight stack traces on embedded devices that can be resolved either on embedded or on
@ -312,12 +312,13 @@ another system (this is theoretically possible currently but untested).
| ------------------------------------------------ | --------- | | ------------------------------------------------ | --------- |
| DWARF in binary | ✔️ | | DWARF in binary | ✔️ |
| DWARF in separate binary (binary gnu debug link) | ️️✔️ | | DWARF in separate binary (binary gnu debug link) | ️️✔️ |
| DWARF in separate binary (split dwarf) | Untested | | DWARF in separate binary (split dwarf) | Soon |
| DWARF in dSYM | ✔️ | | DWARF in dSYM | ✔️ |
| DWARF in via Mach-O debug map | Not yet | | DWARF in via Mach-O debug map | Soon |
| Windows debug symbols in PE | Untested |
| Windows debug symbols in PDB | ✔️ | | Windows debug symbols in PDB | ✔️ |
DWARF5 added DWARF package files. As far as I can tell no compiler implements these yet.
## Usage ## Usage
### CMake FetchContent ### CMake FetchContent