CommandInterpreter.h revision 5a15e6927b5b3234fb3e688717297ba6b5dd6ad7
1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//===-- CommandInterpreter.h ------------------------------------*- C++ -*-===// 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// The LLVM Compiler Infrastructure 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// This file is distributed under the University of Illinois Open Source 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// License. See LICENSE.TXT for details. 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//===----------------------------------------------------------------------===// 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifndef liblldb_CommandInterpreter_h_ 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define liblldb_CommandInterpreter_h_ 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// C Includes 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// C++ Includes 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Other libraries and framework includes 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Project includes 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/lldb-private.h" 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Core/Broadcaster.h" 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Core/Debugger.h" 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Core/Log.h" 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Interpreter/CommandObject.h" 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Interpreter/ScriptInterpreter.h" 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Core/Event.h" 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Interpreter/Args.h" 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "lldb/Core/StringList.h" 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace lldb_private { 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass CommandInterpreter : public Broadcaster 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic: 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver typedef std::map<std::string, OptionArgVectorSP> OptionArgMap; 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver enum 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eBroadcastBitThreadShouldExit = (1 << 0), 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eBroadcastBitResetPrompt = (1 << 1), 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eBroadcastBitQuitCommandReceived = (1 << 2), // User entered quit 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eBroadcastBitAsynchronousOutputData = (1 << 3), 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eBroadcastBitAsynchronousErrorData = (1 << 4) 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }; 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver enum ChildrenTruncatedWarningStatus // tristate boolean to manage children truncation warning 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eNoTruncation = 0, // never truncated 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eUnwarnedTruncation = 1, // truncated but did not notify 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eWarnedTruncation = 2 // truncated and notified 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }; 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver enum CommandTypes 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eCommandTypesBuiltin = 0x0001, // native commands such as "frame" 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eCommandTypesUserDef = 0x0002, // scripted commands 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eCommandTypesAliases = 0x0004, // aliases such as "po" 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver eCommandTypesAllThem = 0xFFFF // all commands 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // These two functions fill out the Broadcaster interface: 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver static ConstString &GetStaticBroadcasterClass (); 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver virtual ConstString &GetBroadcasterClass() const 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return GetStaticBroadcasterClass(); 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SourceInitFile (bool in_cwd, 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandReturnObject &result); 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandInterpreter (Debugger &debugger, 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lldb::ScriptLanguage script_language, 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool synchronous_execution); 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver virtual 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ~CommandInterpreter (); 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AddCommand (const char *name, 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver const lldb::CommandObjectSP &cmd_sp, 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool can_replace); 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AddUserCommand (std::string name, 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver const lldb::CommandObjectSP &cmd_sp, 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool can_replace); 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lldb::CommandObjectSP 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver GetCommandSPExact (const char *cmd, 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool include_aliases); 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandObject * 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver GetCommandObjectExact (const char *cmd_cstr, 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool include_aliases); 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandObject * 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver GetCommandObject (const char *cmd, 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver StringList *matches = NULL); 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandExists (const char *cmd); 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AliasExists (const char *cmd); 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver UserCommandExists (const char *cmd); 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AddAlias (const char *alias_name, 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lldb::CommandObjectSP& command_obj_sp); 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver RemoveAlias (const char *alias_name); 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver RemoveUser (const char *alias_name); 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver RemoveAllUser () 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver m_user_dict.clear(); 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver OptionArgVectorSP 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver GetAliasOptions (const char *alias_name); 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ProcessAliasOptionsArgs (lldb::CommandObjectSP &cmd_obj_sp, 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver const char *options_args, 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver OptionArgVectorSP &option_arg_vector_sp); 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver RemoveAliasOptions (const char *alias_name); 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AddOrReplaceAliasOptions (const char *alias_name, 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver OptionArgVectorSP &option_arg_vector_sp); 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandObject * 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver BuildAliasResult (const char *alias_name, 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver std::string &raw_input_string, 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver std::string &alias_result, 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandReturnObject &result); 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver HandleCommand (const char *command_line, 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool add_to_history, 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandReturnObject &result, 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ExecutionContext *override_context = NULL, 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool repeat_on_empty_command = true, 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool no_context_switching = false); 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver //------------------------------------------------------------------ 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// Execute a list of commands in sequence. 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in] commands 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// The list of commands to execute. 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in/out] context 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// The execution context in which to run the commands. Can be NULL in which case the default 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// context will be used. 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in] stop_on_continue 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// If \b true execution will end on the first command that causes the process in the 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// execution context to continue. If \false, we won't check the execution status. 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in] stop_on_error 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// If \b true execution will end on the first command that causes an error. 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in] echo_commands 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// If \b true echo the command before executing it. If \false, execute silently. 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[in] print_results 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// If \b true print the results of the command after executing it. If \false, execute silently. 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// @param[out] result 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// This is marked as succeeding with no output if all commands execute safely, 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /// and failed with some explanation if we aborted executing the commands at some point. 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver //------------------------------------------------------------------ 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver void 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver HandleCommands (const StringList &commands, 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ExecutionContext *context, 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool stop_on_continue, 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool stop_on_error, 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool echo_commands, 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool print_results, 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommandReturnObject &result); 184 185 //------------------------------------------------------------------ 186 /// Execute a list of commands from a file. 187 /// 188 /// @param[in] file 189 /// The file from which to read in commands. 190 /// @param[in/out] context 191 /// The execution context in which to run the commands. Can be NULL in which case the default 192 /// context will be used. 193 /// @param[in] stop_on_continue 194 /// If \b true execution will end on the first command that causes the process in the 195 /// execution context to continue. If \false, we won't check the execution status. 196 /// @param[in] stop_on_error 197 /// If \b true execution will end on the first command that causes an error. 198 /// @param[in] echo_commands 199 /// If \b true echo the command before executing it. If \false, execute silently. 200 /// @param[in] print_results 201 /// If \b true print the results of the command after executing it. If \false, execute silently. 202 /// @param[out] result 203 /// This is marked as succeeding with no output if all commands execute safely, 204 /// and failed with some explanation if we aborted executing the commands at some point. 205 //------------------------------------------------------------------ 206 void 207 HandleCommandsFromFile (FileSpec &file, 208 ExecutionContext *context, 209 bool stop_on_continue, 210 bool stop_on_error, 211 bool echo_commands, 212 bool print_results, 213 CommandReturnObject &result); 214 215 CommandObject * 216 GetCommandObjectForCommand (std::string &command_line); 217 218 // This handles command line completion. You are given a pointer to the command string buffer, to the current cursor, 219 // and to the end of the string (in case it is not NULL terminated). 220 // You also passed in an StringList object to fill with the returns. 221 // The first element of the array will be filled with the string that you would need to insert at 222 // the cursor point to complete the cursor point to the longest common matching prefix. 223 // If you want to limit the number of elements returned, set max_return_elements to the number of elements 224 // you want returned. Otherwise set max_return_elements to -1. 225 // If you want to start some way into the match list, then set match_start_point to the desired start 226 // point. 227 // Returns: 228 // -1 if the completion character should be inserted 229 // -2 if the entire command line should be deleted and replaced with matches.GetStringAtIndex(0) 230 // INT_MAX if the number of matches is > max_return_elements, but it is expensive to compute. 231 // Otherwise, returns the number of matches. 232 // 233 // FIXME: Only max_return_elements == -1 is supported at present. 234 235 int 236 HandleCompletion (const char *current_line, 237 const char *cursor, 238 const char *last_char, 239 int match_start_point, 240 int max_return_elements, 241 StringList &matches); 242 243 // This version just returns matches, and doesn't compute the substring. It is here so the 244 // Help command can call it for the first argument. 245 // word_complete tells whether a the completions are considered a "complete" response (so the 246 // completer should complete the quote & put a space after the word. 247 248 int 249 HandleCompletionMatches (Args &input, 250 int &cursor_index, 251 int &cursor_char_position, 252 int match_start_point, 253 int max_return_elements, 254 bool &word_complete, 255 StringList &matches); 256 257 258 int 259 GetCommandNamesMatchingPartialString (const char *cmd_cstr, 260 bool include_aliases, 261 StringList &matches); 262 263 void 264 GetHelp (CommandReturnObject &result, 265 uint32_t types = eCommandTypesAllThem); 266 267 void 268 GetAliasHelp (const char *alias_name, 269 const char *command_name, 270 StreamString &help_string); 271 272 void 273 OutputFormattedHelpText (Stream &stream, 274 const char *command_word, 275 const char *separator, 276 const char *help_text, 277 uint32_t max_word_len); 278 279 // this mimics OutputFormattedHelpText but it does perform a much simpler 280 // formatting, basically ensuring line alignment. This is only good if you have 281 // some complicated layout for your help text and want as little help as reasonable 282 // in properly displaying it. Most of the times, you simply want to type some text 283 // and have it printed in a reasonable way on screen. If so, use OutputFormattedHelpText 284 void 285 OutputHelpText (Stream &stream, 286 const char *command_word, 287 const char *separator, 288 const char *help_text, 289 uint32_t max_word_len); 290 291 Debugger & 292 GetDebugger () 293 { 294 return m_debugger; 295 } 296 297 ExecutionContext & 298 GetExecutionContext() 299 { 300 return m_exe_ctx; 301 } 302 303 void 304 UpdateExecutionContext (ExecutionContext *override_context); 305 306 lldb::PlatformSP 307 GetPlatform (bool prefer_target_platform); 308 309 const char * 310 ProcessEmbeddedScriptCommands (const char *arg); 311 312 const char * 313 GetPrompt (); 314 315 void 316 SetPrompt (const char *); 317 318 bool Confirm (const char *message, bool default_answer); 319 320 static size_t 321 GetConfirmationInputReaderCallback (void *baton, 322 InputReader &reader, 323 lldb::InputReaderAction action, 324 const char *bytes, 325 size_t bytes_len); 326 327 void 328 LoadCommandDictionary (); 329 330 void 331 Initialize (); 332 333 void 334 CrossRegisterCommand (const char *dest_cmd, 335 const char *object_type); 336 337 void 338 SetScriptLanguage (lldb::ScriptLanguage lang); 339 340 341 bool 342 HasCommands (); 343 344 bool 345 HasAliases (); 346 347 bool 348 HasUserCommands (); 349 350 bool 351 HasAliasOptions (); 352 353 void 354 BuildAliasCommandArgs (CommandObject *alias_cmd_obj, 355 const char *alias_name, 356 Args &cmd_args, 357 std::string &raw_input_string, 358 CommandReturnObject &result); 359 360 int 361 GetOptionArgumentPosition (const char *in_string); 362 363 ScriptInterpreter * 364 GetScriptInterpreter (); 365 366 void 367 SkipLLDBInitFiles (bool skip_lldbinit_files) 368 { 369 m_skip_lldbinit_files = skip_lldbinit_files; 370 } 371 372 void 373 SkipAppInitFiles (bool skip_app_init_files) 374 { 375 m_skip_app_init_files = m_skip_lldbinit_files; 376 } 377 378 bool 379 GetSynchronous (); 380 381 void 382 DumpHistory (Stream &stream, uint32_t count) const; 383 384 void 385 DumpHistory (Stream &stream, uint32_t start, uint32_t end) const; 386 387 const char * 388 FindHistoryString (const char *input_str) const; 389 390 391#ifndef SWIG 392 void 393 AddLogChannel (const char *name, 394 const Log::Callbacks &log_callbacks); 395 396 bool 397 GetLogChannelCallbacks (const char *channel, 398 Log::Callbacks &log_callbacks); 399 400 bool 401 RemoveLogChannel (const char *name); 402#endif 403 404 size_t 405 FindLongestCommandWord (CommandObject::CommandMap &dict); 406 407 void 408 FindCommandsForApropos (const char *word, 409 StringList &commands_found, 410 StringList &commands_help); 411 412 void 413 AproposAllSubCommands (CommandObject *cmd_obj, 414 const char *prefix, 415 const char *search_word, 416 StringList &commands_found, 417 StringList &commands_help); 418 419 bool 420 GetBatchCommandMode () { return m_batch_command_mode; } 421 422 void 423 SetBatchCommandMode (bool value) { m_batch_command_mode = value; } 424 425 void 426 ChildrenTruncated() 427 { 428 if (m_truncation_warning == eNoTruncation) 429 m_truncation_warning = eUnwarnedTruncation; 430 } 431 432 bool 433 TruncationWarningNecessary() 434 { 435 return (m_truncation_warning == eUnwarnedTruncation); 436 } 437 438 void 439 TruncationWarningGiven() 440 { 441 m_truncation_warning = eWarnedTruncation; 442 } 443 444 const char * 445 TruncationWarningText() 446 { 447 return "*** Some of your variables have more members than the debugger will show by default. To show all of them, you can either use the --show-all-children option to %s or raise the limit by changing the target.max-children-count setting.\n"; 448 } 449 450protected: 451 friend class Debugger; 452 453 void 454 SetSynchronous (bool value); 455 456 lldb::CommandObjectSP 457 GetCommandSP (const char *cmd, bool include_aliases = true, bool exact = true, StringList *matches = NULL); 458 459private: 460 461 Error 462 PreprocessCommand (std::string &command); 463 464 Debugger &m_debugger; // The debugger session that this interpreter is associated with 465 ExecutionContext m_exe_ctx; // The current execution context to use when handling commands 466 bool m_synchronous_execution; 467 bool m_skip_lldbinit_files; 468 bool m_skip_app_init_files; 469 CommandObject::CommandMap m_command_dict; // Stores basic built-in commands (they cannot be deleted, removed or overwritten). 470 CommandObject::CommandMap m_alias_dict; // Stores user aliases/abbreviations for commands 471 CommandObject::CommandMap m_user_dict; // Stores user-defined commands 472 OptionArgMap m_alias_options; // Stores any options (with or without arguments) that go with any alias. 473 std::vector<std::string> m_command_history; 474 std::string m_repeat_command; // Stores the command that will be executed for an empty command string. 475 std::auto_ptr<ScriptInterpreter> m_script_interpreter_ap; 476 char m_comment_char; 477 char m_repeat_char; 478 bool m_batch_command_mode; 479 ChildrenTruncatedWarningStatus m_truncation_warning; // Whether we truncated children and whether the user has been told 480 481}; 482 483 484} // namespace lldb_private 485 486#endif // liblldb_CommandInterpreter_h_ 487