LLDB API Documentation

SBTarget.h
Go to the documentation of this file.
1 //===-- SBTarget.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_SBTarget_h_
11 #define LLDB_SBTarget_h_
12 
13 #include "lldb/API/SBDefines.h"
14 #include "lldb/API/SBAddress.h"
15 #include "lldb/API/SBBroadcaster.h"
16 #include "lldb/API/SBFileSpec.h"
19 #include "lldb/API/SBType.h"
20 #include "lldb/API/SBValue.h"
21 #include "lldb/API/SBWatchpoint.h"
22 
23 namespace lldb {
24 
26 {
27 public:
28  SBLaunchInfo (const char **argv);
29 
30  ~SBLaunchInfo();
31 
32  uint32_t
33  GetUserID();
34 
35  uint32_t
36  GetGroupID();
37 
38  bool
39  UserIDIsValid ();
40 
41  bool
42  GroupIDIsValid ();
43 
44  void
45  SetUserID (uint32_t uid);
46 
47  void
48  SetGroupID (uint32_t gid);
49 
50  uint32_t
51  GetNumArguments ();
52 
53  const char *
54  GetArgumentAtIndex (uint32_t idx);
55 
56  void
57  SetArguments (const char **argv, bool append);
58 
59  uint32_t
61 
62  const char *
63  GetEnvironmentEntryAtIndex (uint32_t idx);
64 
65  void
66  SetEnvironmentEntries (const char **envp, bool append);
67 
68  void
69  Clear ();
70 
71  const char *
72  GetWorkingDirectory () const;
73 
74  void
75  SetWorkingDirectory (const char *working_dir);
76 
77  uint32_t
78  GetLaunchFlags ();
79 
80  void
81  SetLaunchFlags (uint32_t flags);
82 
83  const char *
85 
86  void
87  SetProcessPluginName (const char *plugin_name);
88 
89  const char *
90  GetShell ();
91 
92  void
93  SetShell (const char * path);
94 
95  uint32_t
96  GetResumeCount ();
97 
98  void
99  SetResumeCount (uint32_t c);
100 
101  bool
102  AddCloseFileAction (int fd);
103 
104  bool
105  AddDuplicateFileAction (int fd, int dup_fd);
106 
107  bool
108  AddOpenFileAction (int fd, const char *path, bool read, bool write);
109 
110  bool
111  AddSuppressFileAction (int fd, bool read, bool write);
112 
113 protected:
114  friend class SBTarget;
115 
116  lldb_private::ProcessLaunchInfo &
117  ref ();
118 
119  ProcessLaunchInfoSP m_opaque_sp;
120 };
121 
123 {
124 public:
125  SBAttachInfo ();
126 
127  SBAttachInfo (lldb::pid_t pid);
128 
129  SBAttachInfo (const char *path, bool wait_for);
130 
131  SBAttachInfo (const SBAttachInfo &rhs);
132 
133  ~SBAttachInfo();
134 
135  SBAttachInfo &
136  operator = (const SBAttachInfo &rhs);
137 
138  lldb::pid_t
139  GetProcessID ();
140 
141  void
142  SetProcessID (lldb::pid_t pid);
143 
144  void
145  SetExecutable (const char *path);
146 
147  void
148  SetExecutable (lldb::SBFileSpec exe_file);
149 
150  bool
151  GetWaitForLaunch ();
152 
153  void
154  SetWaitForLaunch (bool b);
155 
156  bool
158 
159  void
160  SetIgnoreExisting (bool b);
161 
162  uint32_t
163  GetResumeCount ();
164 
165  void
166  SetResumeCount (uint32_t c);
167 
168  const char *
170 
171  void
172  SetProcessPluginName (const char *plugin_name);
173 
174  uint32_t
175  GetUserID();
176 
177  uint32_t
178  GetGroupID();
179 
180  bool
181  UserIDIsValid ();
182 
183  bool
184  GroupIDIsValid ();
185 
186  void
187  SetUserID (uint32_t uid);
188 
189  void
190  SetGroupID (uint32_t gid);
191 
192  uint32_t
194 
195  uint32_t
197 
198  bool
200 
201  bool
203 
204  void
205  SetEffectiveUserID (uint32_t uid);
206 
207  void
208  SetEffectiveGroupID (uint32_t gid);
209 
210  lldb::pid_t
212 
213  void
214  SetParentProcessID (lldb::pid_t pid);
215 
216  bool
218 
219 
220 protected:
221  friend class SBTarget;
222 
223  lldb_private::ProcessAttachInfo &
224  ref ();
225 
226  ProcessAttachInfoSP m_opaque_sp;
227 };
228 
229 class SBTarget
230 {
231 public:
232  //------------------------------------------------------------------
233  // Broadcaster bits.
234  //------------------------------------------------------------------
235  enum
236  {
242  };
243 
244  //------------------------------------------------------------------
245  // Constructors
246  //------------------------------------------------------------------
247  SBTarget ();
248 
249  SBTarget (const lldb::SBTarget& rhs);
250 
251  SBTarget (const lldb::TargetSP& target_sp);
252 
253  const lldb::SBTarget&
254  operator = (const lldb::SBTarget& rhs);
255 
256  //------------------------------------------------------------------
257  // Destructor
258  //------------------------------------------------------------------
259  ~SBTarget();
260 
261  bool
262  IsValid() const;
263 
264  static const char *
266 
268  GetProcess ();
269 
270  //------------------------------------------------------------------
271  /// Launch a new process.
272  ///
273  /// Launch a new process by spawning a new process using the
274  /// target object's executable module's file as the file to launch.
275  /// Arguments are given in \a argv, and the environment variables
276  /// are in \a envp. Standard input and output files can be
277  /// optionally re-directed to \a stdin_path, \a stdout_path, and
278  /// \a stderr_path.
279  ///
280  /// @param[in] listener
281  /// An optional listener that will receive all process events.
282  /// If \a listener is valid then \a listener will listen to all
283  /// process events. If not valid, then this target's debugger
284  /// (SBTarget::GetDebugger()) will listen to all process events.
285  ///
286  /// @param[in] argv
287  /// The argument array.
288  ///
289  /// @param[in] envp
290  /// The environment array.
291  ///
292  /// @param[in] launch_flags
293  /// Flags to modify the launch (@see lldb::LaunchFlags)
294  ///
295  /// @param[in] stdin_path
296  /// The path to use when re-directing the STDIN of the new
297  /// process. If all stdXX_path arguments are NULL, a pseudo
298  /// terminal will be used.
299  ///
300  /// @param[in] stdout_path
301  /// The path to use when re-directing the STDOUT of the new
302  /// process. If all stdXX_path arguments are NULL, a pseudo
303  /// terminal will be used.
304  ///
305  /// @param[in] stderr_path
306  /// The path to use when re-directing the STDERR of the new
307  /// process. If all stdXX_path arguments are NULL, a pseudo
308  /// terminal will be used.
309  ///
310  /// @param[in] working_directory
311  /// The working directory to have the child process run in
312  ///
313  /// @param[in] launch_flags
314  /// Some launch options specified by logical OR'ing
315  /// lldb::LaunchFlags enumeration values together.
316  ///
317  /// @param[in] stop_at_endtry
318  /// If false do not stop the inferior at the entry point.
319  ///
320  /// @param[out]
321  /// An error object. Contains the reason if there is some failure.
322  ///
323  /// @return
324  /// A process object for the newly created process.
325  //------------------------------------------------------------------
327  Launch (SBListener &listener,
328  char const **argv,
329  char const **envp,
330  const char *stdin_path,
331  const char *stdout_path,
332  const char *stderr_path,
333  const char *working_directory,
334  uint32_t launch_flags, // See LaunchFlags
335  bool stop_at_entry,
336  lldb::SBError& error);
337 
338 
339  //------------------------------------------------------------------
340  /// Launch a new process with sensible defaults.
341  ///
342  /// @param[in] argv
343  /// The argument array.
344  ///
345  /// @param[in] envp
346  /// The environment array.
347  ///
348  /// @param[in] working_directory
349  /// The working directory to have the child process run in
350  ///
351  /// Default: listener
352  /// Set to the target's debugger (SBTarget::GetDebugger())
353  ///
354  /// Default: launch_flags
355  /// Empty launch flags
356  ///
357  /// Default: stdin_path
358  /// Default: stdout_path
359  /// Default: stderr_path
360  /// A pseudo terminal will be used.
361  ///
362  /// @return
363  /// A process object for the newly created process.
364  //------------------------------------------------------------------
365  SBProcess
366  LaunchSimple (const char **argv,
367  const char **envp,
368  const char *working_directory);
369 
370  SBProcess
371  Launch (SBLaunchInfo &launch_info, SBError& error);
372 
373  SBProcess
374  LoadCore (const char *core_file);
375 
376  SBProcess
377  Attach (SBAttachInfo &attach_info, SBError& error);
378 
379  //------------------------------------------------------------------
380  /// Attach to process with pid.
381  ///
382  /// @param[in] listener
383  /// An optional listener that will receive all process events.
384  /// If \a listener is valid then \a listener will listen to all
385  /// process events. If not valid, then this target's debugger
386  /// (SBTarget::GetDebugger()) will listen to all process events.
387  ///
388  /// @param[in] pid
389  /// The process ID to attach to.
390  ///
391  /// @param[out]
392  /// An error explaining what went wrong if attach fails.
393  ///
394  /// @return
395  /// A process object for the attached process.
396  //------------------------------------------------------------------
399  lldb::pid_t pid,
400  lldb::SBError& error);
401 
402 #if defined(__APPLE__)
403  // We need to keep this around for a build or two since Xcode links
404  // to the 32 bit version of this function. We will take it out soon.
407  ::pid_t pid, // 32 bit int process ID
408  lldb::SBError& error); // DEPRECATED
409 #endif
410  //------------------------------------------------------------------
411  /// Attach to process with name.
412  ///
413  /// @param[in] listener
414  /// An optional listener that will receive all process events.
415  /// If \a listener is valid then \a listener will listen to all
416  /// process events. If not valid, then this target's debugger
417  /// (SBTarget::GetDebugger()) will listen to all process events.
418  ///
419  /// @param[in] name
420  /// Basename of process to attach to.
421  ///
422  /// @param[in] wait_for
423  /// If true wait for a new instance of 'name' to be launched.
424  ///
425  /// @param[out]
426  /// An error explaining what went wrong if attach fails.
427  ///
428  /// @return
429  /// A process object for the attached process.
430  //------------------------------------------------------------------
433  const char *name,
434  bool wait_for,
435  lldb::SBError& error);
436 
437  //------------------------------------------------------------------
438  /// Connect to a remote debug server with url.
439  ///
440  /// @param[in] listener
441  /// An optional listener that will receive all process events.
442  /// If \a listener is valid then \a listener will listen to all
443  /// process events. If not valid, then this target's debugger
444  /// (SBTarget::GetDebugger()) will listen to all process events.
445  ///
446  /// @param[in] url
447  /// The url to connect to, e.g., 'connect://localhost:12345'.
448  ///
449  /// @param[in] plugin_name
450  /// The plugin name to be used; can be NULL.
451  ///
452  /// @param[out]
453  /// An error explaining what went wrong if the connect fails.
454  ///
455  /// @return
456  /// A process object for the connected process.
457  //------------------------------------------------------------------
459  ConnectRemote (SBListener &listener,
460  const char *url,
461  const char *plugin_name,
462  SBError& error);
463 
465  GetExecutable ();
466 
467  bool
468  AddModule (lldb::SBModule &module);
469 
471  AddModule (const char *path,
472  const char *triple,
473  const char *uuid);
474 
476  AddModule (const char *path,
477  const char *triple,
478  const char *uuid_cstr,
479  const char *symfile);
480 
482  AddModule (const SBModuleSpec &module_spec);
483 
484  uint32_t
485  GetNumModules () const;
486 
488  GetModuleAtIndex (uint32_t idx);
489 
490  bool
491  RemoveModule (lldb::SBModule module);
492 
494  GetDebugger() const;
495 
497  FindModule (const lldb::SBFileSpec &file_spec);
498 
499  lldb::ByteOrder
500  GetByteOrder ();
501 
502  uint32_t
504 
505  const char *
506  GetTriple ();
507 
508  //------------------------------------------------------------------
509  /// Set the base load address for a module section.
510  ///
511  /// @param[in] section
512  /// The section whose base load address will be set within this
513  /// target.
514  ///
515  /// @param[in] section_base_addr
516  /// The base address for the section.
517  ///
518  /// @return
519  /// An error to indicate success, fail, and any reason for
520  /// failure.
521  //------------------------------------------------------------------
524  lldb::addr_t section_base_addr);
525 
526  //------------------------------------------------------------------
527  /// Clear the base load address for a module section.
528  ///
529  /// @param[in] section
530  /// The section whose base load address will be cleared within
531  /// this target.
532  ///
533  /// @return
534  /// An error to indicate success, fail, and any reason for
535  /// failure.
536  //------------------------------------------------------------------
539 
540  //------------------------------------------------------------------
541  /// Slide all file addresses for all module sections so that \a module
542  /// appears to loaded at these slide addresses.
543  ///
544  /// When you need all sections within a module to be loaded at a
545  /// rigid slide from the addresses found in the module object file,
546  /// this function will allow you to easily and quickly slide all
547  /// module sections.
548  ///
549  /// @param[in] module
550  /// The module to load.
551  ///
552  /// @param[in] sections_offset
553  /// An offset that will be applied to all section file addresses
554  /// (the virtual addresses found in the object file itself).
555  ///
556  /// @return
557  /// An error to indicate success, fail, and any reason for
558  /// failure.
559  //------------------------------------------------------------------
562  int64_t sections_offset);
563 
564 
565  //------------------------------------------------------------------
566  /// The the section base load addresses for all sections in a module.
567  ///
568  /// @param[in] module
569  /// The module to unload.
570  ///
571  /// @return
572  /// An error to indicate success, fail, and any reason for
573  /// failure.
574  //------------------------------------------------------------------
577 
578  //------------------------------------------------------------------
579  /// Find functions by name.
580  ///
581  /// @param[in] name
582  /// The name of the function we are looking for.
583  ///
584  /// @param[in] name_type_mask
585  /// A logical OR of one or more FunctionNameType enum bits that
586  /// indicate what kind of names should be used when doing the
587  /// lookup. Bits include fully qualified names, base names,
588  /// C++ methods, or ObjC selectors.
589  /// See FunctionNameType for more details.
590  ///
591  /// @return
592  /// A lldb::SBSymbolContextList that gets filled in with all of
593  /// the symbol contexts for all the matches.
594  //------------------------------------------------------------------
596  FindFunctions (const char *name,
597  uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
598 
599  //------------------------------------------------------------------
600  /// Find global and static variables by name.
601  ///
602  /// @param[in] name
603  /// The name of the global or static variable we are looking
604  /// for.
605  ///
606  /// @param[in] max_matches
607  /// Allow the number of matches to be limited to \a max_matches.
608  ///
609  /// @return
610  /// A list of matched variables in an SBValueList.
611  //------------------------------------------------------------------
613  FindGlobalVariables (const char *name,
614  uint32_t max_matches);
615 
616  //------------------------------------------------------------------
617  /// Find the first global (or static) variable by name.
618  ///
619  /// @param[in] name
620  /// The name of the global or static variable we are looking
621  /// for.
622  ///
623  /// @return
624  /// An SBValue that gets filled in with the found variable (if any).
625  //------------------------------------------------------------------
627  FindFirstGlobalVariable (const char* name);
628 
629  void
630  Clear ();
631 
633  ResolveLoadAddress (lldb::addr_t vm_addr);
634 
637  uint32_t resolve_scope);
638 
640  BreakpointCreateByLocation (const char *file, uint32_t line);
641 
643  BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
644 
646  BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
647 
648  // This version uses name_type_mask = eFunctionNameTypeAuto
650  BreakpointCreateByName (const char *symbol_name,
651  const SBFileSpecList &module_list,
652  const SBFileSpecList &comp_unit_list);
653 
655  BreakpointCreateByName (const char *symbol_name,
656  uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
657  const SBFileSpecList &module_list,
658  const SBFileSpecList &comp_unit_list);
659 
661  BreakpointCreateByNames (const char *symbol_name[],
662  uint32_t num_names,
663  uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
664  const SBFileSpecList &module_list,
665  const SBFileSpecList &comp_unit_list);
666 
668  BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
669 
671  BreakpointCreateByRegex (const char *symbol_name_regex,
672  const SBFileSpecList &module_list,
673  const SBFileSpecList &comp_unit_list);
674 
676  BreakpointCreateBySourceRegex (const char *source_regex,
677  const lldb::SBFileSpec &source_file,
678  const char *module_name = NULL);
679 
681  BreakpointCreateBySourceRegex (const char *source_regex,
682  const SBFileSpecList &module_list,
683  const lldb::SBFileSpecList &source_file);
684 
686  BreakpointCreateForException (lldb::LanguageType language,
687  bool catch_bp,
688  bool throw_bp);
689 
691  BreakpointCreateByAddress (addr_t address);
692 
693  uint32_t
694  GetNumBreakpoints () const;
695 
697  GetBreakpointAtIndex (uint32_t idx) const;
698 
699  bool
700  BreakpointDelete (break_id_t break_id);
701 
703  FindBreakpointByID (break_id_t break_id);
704 
705  bool
707 
708  bool
710 
711  bool
713 
714  uint32_t
715  GetNumWatchpoints () const;
716 
718  GetWatchpointAtIndex (uint32_t idx) const;
719 
720  bool
721  DeleteWatchpoint (lldb::watch_id_t watch_id);
722 
724  FindWatchpointByID (lldb::watch_id_t watch_id);
725 
727  WatchAddress (lldb::addr_t addr, size_t size, bool read, bool write, SBError& error);
728 
729  bool
731 
732  bool
734 
735  bool
737 
739  GetBroadcaster () const;
740 
742  FindFirstType (const char* type);
743 
745  FindTypes (const char* type);
746 
748  GetBasicType(lldb::BasicType type);
749 
752 
754  ReadInstructions (lldb::SBAddress base_addr, uint32_t count);
755 
757  ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string);
758 
760  GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
761 
762  // The "WithFlavor" is necessary to keep SWIG from getting confused about overloaded arguments when
763  // using the buf + size -> Python Object magic.
764 
766  GetInstructionsWithFlavor (lldb::SBAddress base_addr, const char *flavor_string, const void *buf, size_t size);
767 
769  GetInstructions (lldb::addr_t base_addr, const void *buf, size_t size);
770 
772  GetInstructionsWithFlavor (lldb::addr_t base_addr, const char *flavor_string, const void *buf, size_t size);
773 
775  FindSymbols (const char *name,
776  lldb::SymbolType type = eSymbolTypeAny);
777 
778  bool
779  operator == (const lldb::SBTarget &rhs) const;
780 
781  bool
782  operator != (const lldb::SBTarget &rhs) const;
783 
784  bool
785  GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
786 
788  EvaluateExpression (const char *expr, const SBExpressionOptions &options);
789 
790  lldb::addr_t
792 
793 protected:
794  friend class SBAddress;
795  friend class SBBlock;
796  friend class SBDebugger;
797  friend class SBFunction;
798  friend class SBInstruction;
799  friend class SBModule;
800  friend class SBProcess;
801  friend class SBSection;
802  friend class SBSourceManager;
803  friend class SBSymbol;
804  friend class SBValue;
805 
806  //------------------------------------------------------------------
807  // Constructors are private, use static Target::Create function to
808  // create an instance of this class.
809  //------------------------------------------------------------------
810 
811  lldb::TargetSP
812  GetSP () const;
813 
814  void
815  SetSP (const lldb::TargetSP& target_sp);
816 
817 
818 private:
819  //------------------------------------------------------------------
820  // For Target only
821  //------------------------------------------------------------------
822 
823  lldb::TargetSP m_opaque_sp;
824 };
825 
826 } // namespace lldb
827 
828 #endif // LLDB_SBTarget_h_