You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[What about C++23 `<stacktrace>`?](#what-about-c23-stacktrace)
21
-
-[What does cpptrace have over other C++ stacktrace libraries?](#what-does-cpptrace-have-over-other-c-stacktrace-libraries)
22
19
-[Prerequisites](#prerequisites)
23
20
-[Basic Usage](#basic-usage)
24
21
-[`namespace cpptrace`](#namespace-cpptrace)
@@ -57,6 +54,10 @@ Cpptrace also has a C API, docs [here](docs/c-api.md).
57
54
-[Summary of Library Configurations](#summary-of-library-configurations)
58
55
-[Testing Methodology](#testing-methodology)
59
56
-[Notes About the Library](#notes-about-the-library)
57
+
-[FAQ](#faq)
58
+
-[What about C++23 `<stacktrace>`?](#what-about-c23-stacktrace)
59
+
-[What does cpptrace have over other C++ stacktrace libraries?](#what-does-cpptrace-have-over-other-c-stacktrace-libraries)
60
+
-[I'm getting undefined standard library symbols like `std::__1::basic_string` on MacOS](#im-getting-undefined-standard-library-symbols-like-std__1basic_string-on-macos)
60
61
-[Contributing](#contributing)
61
62
-[License](#license)
62
63
@@ -163,33 +164,6 @@ On macOS it is recommended to generate a `.dSYM` file, see [Platform Logistics](
163
164
For other ways to use the library, such as through package managers, a system-wide installation, or on a platform
164
165
without internet access see [How to Include The Library](#how-to-include-the-library) below.
165
166
166
-
# FAQ
167
-
168
-
## What about C++23 `<stacktrace>`?
169
-
170
-
Some day C++23's `<stacktrace>` will be ubiquitous. And maybe one day the msvc implementation will be acceptable.
171
-
The original motivation for cpptrace was to support projects using older C++ standards and as the library has grown its
172
-
functionality has extended beyond the standard library's implementation.
173
-
174
-
Cpptrace provides functionality beyond what the standard library provides and what implementations provide, such as:
175
-
- Walking inlined function calls
176
-
- Providing a lightweight interface for "raw traces"
177
-
- Resolving function parameter types
178
-
- Providing traced exception objects
179
-
- Providing an API for signal-safe stacktrace generation
180
-
- Providing a way to retrieve stack traces from arbitrary exceptions, not just special cpptrace traced exception
181
-
objects. This is a feature coming to C++26, but cpptrace provides a solution for C++11.
182
-
183
-
## What does cpptrace have over other C++ stacktrace libraries?
184
-
185
-
Other C++ stacktrace libraries, such as boost stacktrace and backward-cpp, fall short when it comes to portability and
186
-
ease of use. In testing, I found neither to provide adaquate coverage of various environments. Even when they can be
187
-
made to work in an environment they require manual configuration from the end-user, possibly requiring manual
188
-
installation of third-party dependencies. This is a highly undesirable burden to impose on users, especially when it is
189
-
for a software package which just provides diagnostics as opposed to core functionality. Additionally, cpptrace provides
190
-
support for resolving inlined calls by default for DWARF symbols (boost does not do this, backward-cpp can do this but
191
-
only for some back-ends), better support for resolving full function signatures, and nicer API, among other features.
192
-
193
167
# Prerequisites
194
168
195
169
> [!IMPORTANT]
@@ -1320,6 +1294,51 @@ A couple things I'd like to improve in the future:
1320
1294
in dbghelp the library cannot accurately show const and volatile qualifiers or rvalue references (these appear as
1321
1295
pointers).
1322
1296
1297
+
# FAQ
1298
+
1299
+
## What about C++23 `<stacktrace>`?
1300
+
1301
+
Some day C++23's `<stacktrace>` will be ubiquitous. And maybe one day the msvc implementation will be acceptable.
1302
+
The original motivation for cpptrace was to support projects using older C++ standards and as the library has grown its
1303
+
functionality has extended beyond the standard library's implementation.
1304
+
1305
+
Cpptrace provides functionality beyond what the standard library provides and what implementations provide, such as:
1306
+
- Walking inlined function calls
1307
+
- Providing a lightweight interface for "raw traces"
1308
+
- Resolving function parameter types
1309
+
- Providing traced exception objects
1310
+
- Providing an API for signal-safe stacktrace generation
1311
+
- Providing a way to retrieve stack traces from arbitrary exceptions, not just special cpptrace traced exception
1312
+
objects. This is a feature coming to C++26, but cpptrace provides a solution for C++11.
1313
+
1314
+
## What does cpptrace have over other C++ stacktrace libraries?
1315
+
1316
+
Other C++ stacktrace libraries, such as boost stacktrace and backward-cpp, fall short when it comes to portability and
1317
+
ease of use. In testing, I found neither to provide adaquate coverage of various environments. Even when they can be
1318
+
made to work in an environment they require manual configuration from the end-user, possibly requiring manual
1319
+
installation of third-party dependencies. This is a highly undesirable burden to impose on users, especially when it is
1320
+
for a software package which just provides diagnostics as opposed to core functionality. Additionally, cpptrace provides
1321
+
support for resolving inlined calls by default for DWARF symbols (boost does not do this, backward-cpp can do this but
1322
+
only for some back-ends), better support for resolving full function signatures, and nicer API, among other features.
1323
+
1324
+
## I'm getting undefined standard library symbols like `std::__1::basic_string` on MacOS
1325
+
1326
+
If you see a linker error along the lines of the following on MacOS then it's highly likely you are mixing standard
0 commit comments