From fdf44992598ffb0e889a2aba2197d59c8f95a905 Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sat, 16 Mar 2024 23:31:07 -0500 Subject: [PATCH] Update docs to showcase source code snippets --- README.md | 3 +++ res/snippets.png | Bin 0 -> 23753 bytes 2 files changed, 3 insertions(+) create mode 100644 res/snippets.png diff --git a/README.md b/README.md index 390512e..83473c6 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,9 @@ Additional notable features: - Utilities for demangling - Utilities for catching `std::exception`s and wrapping them in traced exceptions - Signal-safe stack tracing +- Source code snippets in traces + +![Snippets](res/snippets.png) ## CMake FetchContent Usage diff --git a/res/snippets.png b/res/snippets.png new file mode 100644 index 0000000000000000000000000000000000000000..04f6b00b3939a6e220df87507e17b82d11839fc9 GIT binary patch literal 23753 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 cuKbkwsDb=U{fxX4h#$YArlh4