| // Copyright 2018 The Fuchsia 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 SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_FRAME_H_ |
| #define SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_FRAME_H_ |
| |
| #include "src/developer/debug/zxdb/client/pretty_stack_manager.h" |
| #include "src/developer/debug/zxdb/console/async_output_buffer.h" |
| #include "src/developer/debug/zxdb/console/console.h" |
| #include "src/developer/debug/zxdb/console/format_location.h" |
| #include "src/developer/debug/zxdb/console/format_node_console.h" |
| |
| namespace zxdb { |
| |
| struct ConsoleFormatOptions; |
| struct FormatLocationOptions; |
| class Frame; |
| class OutputBuffer; |
| class PrettyStackManager; |
| class Thread; |
| |
| struct FormatFrameOptions { |
| enum Detail { |
| kSimple, // Show only function names and file/line information. |
| kParameters, // Additionally show function parameters. |
| kVerbose, // Additionally show IP/SP/BP. |
| }; |
| |
| Detail detail = kSimple; |
| |
| // Formatting for the function/file name. |
| FormatLocationOptions loc; |
| |
| // Formatting options for function parameters if requested in the Detail. |
| ConsoleFormatOptions variable; |
| }; |
| |
| struct FormatStackOptions { |
| FormatFrameOptions frame; |
| |
| // If non-null, will be used to shorten the frame list. |
| fxl::RefPtr<PrettyStackManager> pretty_stack; |
| }; |
| |
| // Generates the list of frames from the given Thread to the console. This will complete |
| // asynchronously. The current frame will automatically be queried and will be indicated. |
| // |
| // This will request the full frame list from the agent if it has not been synced locally or if |
| // force_update is set. |
| fxl::RefPtr<AsyncOutputBuffer> FormatStack(Thread* thread, bool force_update, |
| const FormatStackOptions& opts); |
| |
| // Formats one frame using the long format. Since the long format includes function parameters which |
| // are computed asynchronously, this returns an AsyncOutputBuffer. |
| // |
| // This does not append a newline at the end of the output. |
| fxl::RefPtr<AsyncOutputBuffer> FormatFrame(const Frame* frame, const FormatFrameOptions& opts, |
| int id = -1); |
| |
| } // namespace zxdb |
| |
| #endif // SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_FORMAT_FRAME_H_ |