| //===-- plugin.cpp -------------------------------------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /* | |
| An example plugin for LLDB that provides a new foo command with a child subcommand | |
| Compile this into a dylib foo.dylib and load by placing in appropriate locations on disk or | |
| by typing plugin load foo.dylib at the LLDB command line | |
| */ | |
| #if defined (__APPLE__) | |
| #include <LLDB/SBCommandInterpreter.h> | |
| #include <LLDB/SBCommandReturnObject.h> | |
| #include <LLDB/SBDebugger.h> | |
| #else | |
| #include <lldb/API/SBCommandInterpreter.h> | |
| #include <lldb/API/SBCommandReturnObject.h> | |
| #include <lldb/API/SBDebugger.h> | |
| #endif | |
| namespace lldb { | |
| bool | |
| PluginInitialize (lldb::SBDebugger debugger); | |
| } | |
| class ChildCommand : public lldb::SBCommandPluginInterface | |
| { | |
| public: | |
| virtual bool | |
| DoExecute (lldb::SBDebugger debugger, | |
| char** command, | |
| lldb::SBCommandReturnObject &result) | |
| { | |
| if (command) | |
| { | |
| const char* arg = *command; | |
| while (arg) | |
| { | |
| result.Printf("%s ",arg); | |
| arg = *(++command); | |
| } | |
| result.Printf("\n"); | |
| return true; | |
| } | |
| return false; | |
| } | |
| }; | |
| bool | |
| lldb::PluginInitialize (lldb::SBDebugger debugger) | |
| { | |
| lldb::SBCommandInterpreter interpreter = debugger.GetCommandInterpreter(); | |
| lldb::SBCommand foo = interpreter.AddMultiwordCommand("plugin_loaded_command",NULL); | |
| foo.AddCommand("child",new ChildCommand(),"a child of plugin_loaded_command"); | |
| return true; | |
| } |