SBDebugger.h revision 17d5a0358d60922707fdab6ec9c3251ca44dd614
1//===-- SBDebugger.h --------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBDebugger_h_
11#define LLDB_SBDebugger_h_
12
13#include "lldb/API/SBDefines.h"
14#include <stdio.h>
15
16namespace lldb {
17
18class SBDebugger
19{
20public:
21
22    static void
23    Initialize();
24
25    static void
26    Terminate();
27
28    // Deprecated, use the one that takes a source_init_files bool.
29    static lldb::SBDebugger
30    Create();
31
32    static lldb::SBDebugger
33    Create(bool source_init_files);
34
35    static lldb::SBDebugger
36    Create(bool source_init_files, lldb::LogOutputCallback log_callback, void *baton);
37
38    static void
39    Destroy (lldb::SBDebugger &debugger);
40
41    static void
42    MemoryPressureDetected ();
43
44    SBDebugger();
45
46    SBDebugger(const lldb::SBDebugger &rhs);
47
48    SBDebugger(const lldb::DebuggerSP &debugger_sp);
49
50    lldb::SBDebugger &
51    operator = (const lldb::SBDebugger &rhs);
52
53    ~SBDebugger();
54
55    bool
56    IsValid() const;
57
58    void
59    Clear ();
60
61    void
62    SetAsync (bool b);
63
64    bool
65    GetAsync ();
66
67    void
68    SkipLLDBInitFiles (bool b);
69
70    void
71    SkipAppInitFiles (bool b);
72
73    void
74    SetInputFileHandle (FILE *f, bool transfer_ownership);
75
76    void
77    SetOutputFileHandle (FILE *f, bool transfer_ownership);
78
79    void
80    SetErrorFileHandle (FILE *f, bool transfer_ownership);
81
82    FILE *
83    GetInputFileHandle ();
84
85    FILE *
86    GetOutputFileHandle ();
87
88    FILE *
89    GetErrorFileHandle ();
90
91    void
92    SaveInputTerminalState();
93
94    void
95    RestoreInputTerminalState();
96
97    lldb::SBCommandInterpreter
98    GetCommandInterpreter ();
99
100    void
101    HandleCommand (const char *command);
102
103    lldb::SBListener
104    GetListener ();
105
106    void
107    HandleProcessEvent (const lldb::SBProcess &process,
108                        const lldb::SBEvent &event,
109                        FILE *out,
110                        FILE *err);
111
112    lldb::SBTarget
113    CreateTarget (const char *filename,
114                  const char *target_triple,
115                  const char *platform_name,
116                  bool add_dependent_modules,
117                  lldb::SBError& error);
118
119    lldb::SBTarget
120    CreateTargetWithFileAndTargetTriple (const char *filename,
121                                         const char *target_triple);
122
123    lldb::SBTarget
124    CreateTargetWithFileAndArch (const char *filename,
125                                 const char *archname);
126
127    lldb::SBTarget
128    CreateTarget (const char *filename);
129
130    // Return true if target is deleted from the target list of the debugger.
131    bool
132    DeleteTarget (lldb::SBTarget &target);
133
134    lldb::SBTarget
135    GetTargetAtIndex (uint32_t idx);
136
137    uint32_t
138    GetIndexOfTarget (lldb::SBTarget target);
139
140    lldb::SBTarget
141    FindTargetWithProcessID (pid_t pid);
142
143    lldb::SBTarget
144    FindTargetWithFileAndArch (const char *filename,
145                               const char *arch);
146
147    uint32_t
148    GetNumTargets ();
149
150    lldb::SBTarget
151    GetSelectedTarget ();
152
153    void
154    SetSelectedTarget (SBTarget& target);
155
156    lldb::SBSourceManager
157    GetSourceManager ();
158
159    // REMOVE: just for a quick fix, need to expose platforms through
160    // SBPlatform from this class.
161    lldb::SBError
162    SetCurrentPlatform (const char *platform_name);
163
164    bool
165    SetCurrentPlatformSDKRoot (const char *sysroot);
166
167    // FIXME: Once we get the set show stuff in place, the driver won't need
168    // an interface to the Set/Get UseExternalEditor.
169    bool
170    SetUseExternalEditor (bool input);
171
172    bool
173    GetUseExternalEditor ();
174
175    bool
176    SetUseColor (bool use_color);
177
178    bool
179    GetUseColor () const;
180
181    static bool
182    GetDefaultArchitecture (char *arch_name, size_t arch_name_len);
183
184    static bool
185    SetDefaultArchitecture (const char *arch_name);
186
187    lldb::ScriptLanguage
188    GetScriptingLanguage (const char *script_language_name);
189
190    static const char *
191    GetVersionString ();
192
193    static const char *
194    StateAsCString (lldb::StateType state);
195
196    static bool
197    StateIsRunningState (lldb::StateType state);
198
199    static bool
200    StateIsStoppedState (lldb::StateType state);
201
202    bool
203    EnableLog (const char *channel, const char **categories);
204
205    void
206    SetLoggingCallback (lldb::LogOutputCallback log_callback, void *baton);
207
208    // DEPRECATED
209    void
210    DispatchInput (void* baton,
211                   const void* data,
212                   size_t data_len);
213
214    void
215    DispatchInput (const void *data, size_t data_len);
216
217    void
218    DispatchInputInterrupt ();
219
220    void
221    DispatchInputEndOfFile ();
222
223    void
224    PushInputReader (lldb::SBInputReader &reader);
225
226    void
227    NotifyTopInputReader (lldb::InputReaderAction notification);
228
229    bool
230    InputReaderIsTopReader (const lldb::SBInputReader &reader);
231
232    const char *
233    GetInstanceName  ();
234
235    static SBDebugger
236    FindDebuggerWithID (int id);
237
238    static lldb::SBError
239    SetInternalVariable (const char *var_name, const char *value, const char *debugger_instance_name);
240
241    static lldb::SBStringList
242    GetInternalVariableValue (const char *var_name, const char *debugger_instance_name);
243
244    bool
245    GetDescription (lldb::SBStream &description);
246
247    uint32_t
248    GetTerminalWidth () const;
249
250    void
251    SetTerminalWidth (uint32_t term_width);
252
253    lldb::user_id_t
254    GetID ();
255
256    const char *
257    GetPrompt() const;
258
259    void
260    SetPrompt (const char *prompt);
261
262    lldb::ScriptLanguage
263    GetScriptLanguage() const;
264
265    void
266    SetScriptLanguage (lldb::ScriptLanguage script_lang);
267
268    bool
269    GetCloseInputOnEOF () const;
270
271    void
272    SetCloseInputOnEOF (bool b);
273
274    SBTypeCategory
275    GetCategory (const char* category_name);
276
277    SBTypeCategory
278    CreateCategory (const char* category_name);
279
280    bool
281    DeleteCategory (const char* category_name);
282
283    uint32_t
284    GetNumCategories ();
285
286    SBTypeCategory
287    GetCategoryAtIndex (uint32_t);
288
289    SBTypeCategory
290    GetDefaultCategory();
291
292    SBTypeFormat
293    GetFormatForType (SBTypeNameSpecifier);
294
295#ifndef LLDB_DISABLE_PYTHON
296    SBTypeSummary
297    GetSummaryForType (SBTypeNameSpecifier);
298#endif
299
300    SBTypeFilter
301    GetFilterForType (SBTypeNameSpecifier);
302
303#ifndef LLDB_DISABLE_PYTHON
304    SBTypeSynthetic
305    GetSyntheticForType (SBTypeNameSpecifier);
306#endif
307
308private:
309
310    friend class SBCommandInterpreter;
311    friend class SBInputReader;
312    friend class SBListener;
313    friend class SBProcess;
314    friend class SBSourceManager;
315    friend class SBTarget;
316
317    lldb::SBTarget
318    FindTargetWithLLDBProcess (const lldb::ProcessSP &processSP);
319
320    void
321    reset (const lldb::DebuggerSP &debugger_sp);
322
323    lldb_private::Debugger *
324    get () const;
325
326    lldb_private::Debugger &
327    ref () const;
328
329    const lldb::DebuggerSP &
330    get_sp () const;
331
332    lldb::DebuggerSP m_opaque_sp;
333
334}; // class SBDebugger
335
336
337} // namespace lldb
338
339#endif // LLDB_SBDebugger_h_
340