aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp
diff options
context:
space:
mode:
authormaksim-kita <maksim-kita@yandex-team.com>2023-11-02 15:15:26 +0300
committermaksim-kita <maksim-kita@yandex-team.com>2023-11-02 16:26:16 +0300
commitd4ec9ad0ad93850fa81d9e78298066d138aba60f (patch)
tree70255a78488d9abdac8cbac0f447356e40249cd2 /library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp
parent7bb2ef5057a017f193e0c790e16dac7e78891c26 (diff)
downloadydb-d4ec9ad0ad93850fa81d9e78298066d138aba60f.tar.gz
Stacktraces add line numbers
Diffstat (limited to 'library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp')
-rw-r--r--library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp b/library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp
new file mode 100644
index 0000000000..dc271ad513
--- /dev/null
+++ b/library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp
@@ -0,0 +1,55 @@
+#include <library/cpp/testing/gtest/gtest.h>
+#include <util/system/compiler.h>
+#include <util/system/backtrace.h>
+#include <util/stream/str.h>
+
+Y_FORCE_INLINE
+TString InlinedFunction_866a4407b28483588033f95add111d() {
+ TStringStream out;
+ FormatBackTrace(&out);
+ return out.Str();
+}
+
+Y_NO_INLINE
+TString Function_3e15a2d04c8613ae64833c5407dd98() {
+ return InlinedFunction_866a4407b28483588033f95add111d();
+}
+
+Y_NO_INLINE
+TString NotInlinedFunction_3c7dbf1e3b2b71819241cb5ad2b142() {
+ return Function_3e15a2d04c8613ae64833c5407dd98();
+}
+
+namespace NTestNamespace {
+ Y_NO_INLINE
+ TString NamespacedFunction() {
+ return InlinedFunction_866a4407b28483588033f95add111d();
+ }
+}
+
+using namespace ::testing;
+TEST(dwarf_backtrace_should, handle_inlines) {
+ const TString backtrace = NotInlinedFunction_3c7dbf1e3b2b71819241cb5ad2b142();
+
+ EXPECT_THAT(
+ backtrace,
+ HasSubstr("InlinedFunction_866a4407b28483588033f95add111d")
+ );
+
+ EXPECT_THAT(
+ backtrace,
+ HasSubstr("backtrace_ut.cpp:9:0 in InlinedFunction")
+ );
+
+ EXPECT_THAT(
+ backtrace,
+ HasSubstr("Function_3e15a2d04c8613ae64833c5407dd98")
+ );
+}
+
+TEST(dwarf_backtrace_should, handle_namespaces) {
+ EXPECT_THAT(
+ NTestNamespace::NamespacedFunction(),
+ HasSubstr("NTestNamespace::NamespacedFunction")
+ );
+}