1//===-- fooplugin.cpp -------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9/*
10An example plugin for LLDB that provides a new foo command with a child
11subcommand
12Compile this into a dylib foo.dylib and load by placing in appropriate locations
13on disk or
14by typing plugin load foo.dylib at the LLDB command line
15*/
16
17#include <LLDB/SBCommandInterpreter.h>
18#include <LLDB/SBCommandReturnObject.h>
19#include <LLDB/SBDebugger.h>
20
21namespace lldb {
22bool PluginInitialize(lldb::SBDebugger debugger);
23}
24
25class ChildCommand : public lldb::SBCommandPluginInterface {
26public:
27 virtual bool DoExecute(lldb::SBDebugger debugger, char **command,
28 lldb::SBCommandReturnObject &result) {
29 if (command) {
30 const char *arg = *command;
31 while (arg) {
32 result.Printf("%s\n", arg);
33 arg = *(++command);
34 }
35 return true;
36 }
37 return false;
38 }
39};
40
41bool lldb::PluginInitialize(lldb::SBDebugger debugger) {
42 lldb::SBCommandInterpreter interpreter = debugger.GetCommandInterpreter();
43 lldb::SBCommand foo = interpreter.AddMultiwordCommand("foo", NULL);
44 foo.AddCommand("child", new ChildCommand(), "a child of foo");
45 return true;
46}
47

source code of lldb/examples/plugins/commands/fooplugin.cpp