| // Copyright (c) 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_STACK_TRACE_H_ |
| #define QUICHE_COMMON_PLATFORM_API_QUICHE_STACK_TRACE_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "absl/types/span.h" |
| |
| #include "quiche_platform_impl/quiche_stack_trace_impl.h" |
| |
| namespace quiche { |
| |
| inline std::vector<void*> CurrentStackTrace() { |
| return CurrentStackTraceImpl(); |
| } |
| |
| inline std::string SymbolizeStackTrace(absl::Span<void* const> stacktrace) { |
| return SymbolizeStackTraceImpl(stacktrace); |
| } |
| |
| // Returns a human-readable stack trace. Mostly used in error logging and |
| // related features. |
| inline std::string QuicheStackTrace() { return QuicheStackTraceImpl(); } |
| |
| // Indicates whether the unit test for QuicheStackTrace() should be run. The |
| // unit test calls QuicheStackTrace() from a specific function and checks |
| // whether that specific function is in the stack trace. This function should |
| // return false if: |
| // (1) QuicheStackTrace() is unimplemented, |
| // (2) QuicheStackTrace() does not work on the current platform, or |
| // (3) QuicheStackTrace() works, but the symbols are not guaranteed to be |
| // available. |
| inline bool QuicheShouldRunStackTraceTest() { |
| return QuicheShouldRunStackTraceTestImpl(); |
| } |
| |
| } // namespace quiche |
| |
| #endif // QUICHE_COMMON_PLATFORM_API_QUICHE_STACK_TRACE_H_ |