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 16 namespace lldb { 17 18 class SBDebugger 19 { 20 public: 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 308 private: 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