mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-06 01:56:05 +00:00

controlled by the --unwind-on-error flag, and --ignore-breakpoint which separately controls behavior when a called function hits a breakpoint. For breakpoints, we don't unwind, we either stop, or ignore the breakpoint, which makes more sense. Also make both these behaviors globally settable through "settings set". Also handle the case where a breakpoint command calls code that ends up re-hitting the breakpoint. We were recursing and crashing. Now we just stop without calling the second command. <rdar://problem/12986644> <rdar://problem/9119325> llvm-svn: 172503
100 lines
2.7 KiB
C++
100 lines
2.7 KiB
C++
//===-- CommandObjectExpression.h -------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_CommandObjectExpression_h_
|
|
#define liblldb_CommandObjectExpression_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/Interpreter/CommandObject.h"
|
|
#include "lldb/Interpreter/OptionGroupFormat.h"
|
|
#include "lldb/Interpreter/OptionGroupValueObjectDisplay.h"
|
|
#include "lldb/Target/ExecutionContext.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
class CommandObjectExpression : public CommandObjectRaw
|
|
{
|
|
public:
|
|
|
|
class CommandOptions : public OptionGroup
|
|
{
|
|
public:
|
|
|
|
CommandOptions ();
|
|
|
|
virtual
|
|
~CommandOptions ();
|
|
|
|
virtual uint32_t
|
|
GetNumDefinitions ();
|
|
|
|
virtual const OptionDefinition*
|
|
GetDefinitions ();
|
|
|
|
virtual Error
|
|
SetOptionValue (CommandInterpreter &interpreter,
|
|
uint32_t option_idx,
|
|
const char *option_value);
|
|
|
|
virtual void
|
|
OptionParsingStarting (CommandInterpreter &interpreter);
|
|
|
|
// Options table: Required for subclasses of Options.
|
|
|
|
static OptionDefinition g_option_table[];
|
|
bool unwind_on_error;
|
|
bool ignore_breakpoints;
|
|
bool show_types;
|
|
bool show_summary;
|
|
uint32_t timeout;
|
|
bool try_all_threads;
|
|
};
|
|
|
|
CommandObjectExpression (CommandInterpreter &interpreter);
|
|
|
|
virtual
|
|
~CommandObjectExpression ();
|
|
|
|
virtual
|
|
Options *
|
|
GetOptions ();
|
|
|
|
protected:
|
|
virtual bool
|
|
DoExecute (const char *command,
|
|
CommandReturnObject &result);
|
|
|
|
static size_t
|
|
MultiLineExpressionCallback (void *baton,
|
|
InputReader &reader,
|
|
lldb::InputReaderAction notification,
|
|
const char *bytes,
|
|
size_t bytes_len);
|
|
|
|
bool
|
|
EvaluateExpression (const char *expr,
|
|
Stream *output_stream,
|
|
Stream *error_stream,
|
|
CommandReturnObject *result = NULL);
|
|
|
|
OptionGroupOptions m_option_group;
|
|
OptionGroupFormat m_format_options;
|
|
OptionGroupValueObjectDisplay m_varobj_options;
|
|
CommandOptions m_command_options;
|
|
uint32_t m_expr_line_count;
|
|
std::string m_expr_lines; // Multi-line expression support
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_CommandObjectExpression_h_
|