diff options
| author | vvvv <[email protected]> | 2025-10-06 11:26:09 +0300 |
|---|---|---|
| committer | vvvv <[email protected]> | 2025-10-06 11:53:26 +0300 |
| commit | 60f45e69a4d7dbc6131208e16c45faf35aa5a985 (patch) | |
| tree | 4daa45b52c295a178c7620e4c93921465fcf7950 /yql/essentials/utils/backtrace/symbolize.cpp | |
| parent | 1bded1a65a7e6e9171418f3e1c691d390125b64e (diff) | |
YQL-20086 utils
init
commit_hash:54feccd520ebd0ab23612bc0cb830914dff9d0e8
Diffstat (limited to 'yql/essentials/utils/backtrace/symbolize.cpp')
| -rw-r--r-- | yql/essentials/utils/backtrace/symbolize.cpp | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/yql/essentials/utils/backtrace/symbolize.cpp b/yql/essentials/utils/backtrace/symbolize.cpp index 360ff408c7d..e96c0a313dd 100644 --- a/yql/essentials/utils/backtrace/symbolize.cpp +++ b/yql/essentials/utils/backtrace/symbolize.cpp @@ -7,56 +7,56 @@ namespace NYql { - namespace NBacktrace { - TString Symbolize(const TString& input, const THashMap<TString, TString>& mapping) { +namespace NBacktrace { +TString Symbolize(const TString& input, const THashMap<TString, TString>& mapping) { #if defined(__linux__) && defined(__x86_64__) - TString output; - TStringOutput out(output); - - i64 stackSize = -1; - TVector<TStackFrame> frames; - TVector<TString> usedFilenames; - for (TStringBuf line: StringSplitter(input).SplitByString("\n")) { - if (line.StartsWith("StackFrames:")) { - TVector<TString> parts; - Split(TString(line), " ", parts); - if (parts.size() > 1) { - TryFromString<i64>(parts[1], stackSize); - frames.reserve(stackSize); - } - } else if (line.StartsWith("StackFrame:")) { - TVector<TString> parts; - Split(TString(line), " ", parts); - TString modulePath; - ui64 address; - ui64 offset; - if (parts.size() > 3) { - modulePath = parts[1]; - TryFromString<ui64>(parts[2], address); - TryFromString<ui64>(parts[3], offset); - auto it = mapping.find(modulePath); - if (it != mapping.end()) { - modulePath = it->second; - } - usedFilenames.emplace_back(std::move(modulePath)); - frames.emplace_back(TStackFrame{usedFilenames.back().c_str(), address - offset}); - } - } else { - out << line << "\n"; + TString output; + TStringOutput out(output); + + i64 stackSize = -1; + TVector<TStackFrame> frames; + TVector<TString> usedFilenames; + for (TStringBuf line : StringSplitter(input).SplitByString("\n")) { + if (line.StartsWith("StackFrames:")) { + TVector<TString> parts; + Split(TString(line), " ", parts); + if (parts.size() > 1) { + TryFromString<i64>(parts[1], stackSize); + frames.reserve(stackSize); + } + } else if (line.StartsWith("StackFrame:")) { + TVector<TString> parts; + Split(TString(line), " ", parts); + TString modulePath; + ui64 address; + ui64 offset; + if (parts.size() > 3) { + modulePath = parts[1]; + TryFromString<ui64>(parts[2], address); + TryFromString<ui64>(parts[3], offset); + auto it = mapping.find(modulePath); + if (it != mapping.end()) { + modulePath = it->second; } + usedFilenames.emplace_back(std::move(modulePath)); + frames.emplace_back(TStackFrame{usedFilenames.back().c_str(), address - offset}); } + } else { + out << line << "\n"; + } + } - if (stackSize == 0) { - out << "Empty stack trace\n"; - } - Symbolize(frames.data(), frames.size(), &out); - return output; + if (stackSize == 0) { + out << "Empty stack trace\n"; + } + Symbolize(frames.data(), frames.size(), &out); + return output; #else - Y_UNUSED(mapping); - return input; + Y_UNUSED(mapping); + return input; #endif - } +} - } /* namespace NBacktrace */ +} /* namespace NBacktrace */ } /* namespace NYql */ |
