// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_PROFILER_UNWINDER_H_ #define BASE_PROFILER_UNWINDER_H_ #include <vector> #include "base/base_export.h" #include "base/memory/raw_ptr.h" #include "base/profiler/frame.h" #include "base/profiler/module_cache.h" #include "base/profiler/register_context.h" namespace base { // The result of attempting to unwind stack frames. enum class UnwindResult { … }; // State information from stack capture. This may capture information from // the `Unwinder` that is outside of the scope of the capture stack. This // is allocated (and destroyed) per each stack capture and is provided // to the Unwinder on each of its virtuals. class BASE_EXPORT UnwinderStateCapture { … }; // Unwinder provides an interface for stack frame unwinder implementations for // use with the StackSamplingProfiler. Initialize() must be invoked prior to the // invocation of any other function on the interface. The profiler is expected // to call CanUnwind() to determine if the Unwinder thinks it can unwind from // the frame represented by the context values, then TryUnwind() to attempt the // unwind. class BASE_EXPORT Unwinder { … }; } // namespace base #endif // BASE_PROFILER_UNWINDER_H_