| /* | |
| 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 | |
| */ | |
| %include_SB_APIs% | |
| 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; | |
| } |