diff options
author | maksim-kita <maksim-kita@yandex-team.com> | 2023-11-02 15:15:26 +0300 |
---|---|---|
committer | maksim-kita <maksim-kita@yandex-team.com> | 2023-11-02 16:26:16 +0300 |
commit | d4ec9ad0ad93850fa81d9e78298066d138aba60f (patch) | |
tree | 70255a78488d9abdac8cbac0f447356e40249cd2 /library/cpp/dwarf_backtrace/ut/backtrace_ut.cpp | |
parent | 7bb2ef5057a017f193e0c790e16dac7e78891c26 (diff) | |
download | ydb-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.cpp | 55 |
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") + ); +} |