SBTarget.i revision ef1f690aa23e81a14654d4a6fe9df7810f4eda06
1//===-- SWIG Interface for SBTarget -----------------------------*- 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
10namespace lldb {
11
12%feature("docstring",
13"Represents the target program running under the debugger.
14
15SBTarget supports module, breakpoint, and watchpoint iterations. For example,
16
17    for m in target.module_iter():
18        print m
19
20produces:
21
22(x86_64) /Volumes/data/lldb/svn/trunk/test/python_api/lldbutil/iter/a.out
23(x86_64) /usr/lib/dyld
24(x86_64) /usr/lib/libstdc++.6.dylib
25(x86_64) /usr/lib/libSystem.B.dylib
26(x86_64) /usr/lib/system/libmathCommon.A.dylib
27(x86_64) /usr/lib/libSystem.B.dylib(__commpage)
28
29and,
30
31    for b in target.breakpoint_iter():
32        print b
33
34produces:
35
36SBBreakpoint: id = 1, file ='main.cpp', line = 66, locations = 1
37SBBreakpoint: id = 2, file ='main.cpp', line = 85, locations = 1
38
39and,
40
41    for wp_loc in target.watchpoint_iter():
42        print wp_loc
43
44produces:
45
46Watchpoint 1: addr = 0x1034ca048 size = 4 state = enabled type = rw
47    declare @ '/Volumes/data/lldb/svn/trunk/test/python_api/watchpoint/main.c:12'
48    hw_index = 0  hit_count = 2     ignore_count = 0"
49) SBTarget;
50class SBTarget
51{
52public:
53    //------------------------------------------------------------------
54    // Broadcaster bits.
55    //------------------------------------------------------------------
56    enum
57    {
58        eBroadcastBitBreakpointChanged  = (1 << 0),
59        eBroadcastBitModulesLoaded      = (1 << 1),
60        eBroadcastBitModulesUnloaded    = (1 << 2)
61    };
62
63    //------------------------------------------------------------------
64    // Constructors
65    //------------------------------------------------------------------
66    SBTarget ();
67
68    SBTarget (const lldb::SBTarget& rhs);
69
70    //------------------------------------------------------------------
71    // Destructor
72    //------------------------------------------------------------------
73    ~SBTarget();
74
75    bool
76    IsValid() const;
77
78    lldb::SBProcess
79    GetProcess ();
80
81    %feature("docstring", "
82    //------------------------------------------------------------------
83    /// Launch a new process.
84    ///
85    /// Launch a new process by spawning a new process using the
86    /// target object's executable module's file as the file to launch.
87    /// Arguments are given in \a argv, and the environment variables
88    /// are in \a envp. Standard input and output files can be
89    /// optionally re-directed to \a stdin_path, \a stdout_path, and
90    /// \a stderr_path.
91    ///
92    /// @param[in] listener
93    ///     An optional listener that will receive all process events.
94    ///     If \a listener is valid then \a listener will listen to all
95    ///     process events. If not valid, then this target's debugger
96    ///     (SBTarget::GetDebugger()) will listen to all process events.
97    ///
98    /// @param[in] argv
99    ///     The argument array.
100    ///
101    /// @param[in] envp
102    ///     The environment array.
103    ///
104    /// @param[in] launch_flags
105    ///     Flags to modify the launch (@see lldb::LaunchFlags)
106    ///
107    /// @param[in] stdin_path
108    ///     The path to use when re-directing the STDIN of the new
109    ///     process. If all stdXX_path arguments are NULL, a pseudo
110    ///     terminal will be used.
111    ///
112    /// @param[in] stdout_path
113    ///     The path to use when re-directing the STDOUT of the new
114    ///     process. If all stdXX_path arguments are NULL, a pseudo
115    ///     terminal will be used.
116    ///
117    /// @param[in] stderr_path
118    ///     The path to use when re-directing the STDERR of the new
119    ///     process. If all stdXX_path arguments are NULL, a pseudo
120    ///     terminal will be used.
121    ///
122    /// @param[in] working_directory
123    ///     The working directory to have the child process run in
124    ///
125    /// @param[in] launch_flags
126    ///     Some launch options specified by logical OR'ing
127    ///     lldb::LaunchFlags enumeration values together.
128    ///
129    /// @param[in] stop_at_endtry
130    ///     If false do not stop the inferior at the entry point.
131    ///
132    /// @param[out]
133    ///     An error object. Contains the reason if there is some failure.
134    ///
135    /// @return
136    ///      A process object for the newly created process.
137    //------------------------------------------------------------------
138
139    For example,
140
141        process = target.Launch(self.dbg.GetListener(), None, None,
142                                None, '/tmp/stdout.txt', None,
143                                None, 0, False, error)
144
145    launches a new process by passing nothing for both the args and the envs
146    and redirect the standard output of the inferior to the /tmp/stdout.txt
147    file. It does not specify a working directory so that the debug server
148    will use its idea of what the current working directory is for the
149    inferior. Also, we ask the debugger not to stop the inferior at the
150    entry point. If no breakpoint is specified for the inferior, it should
151    run to completion if no user interaction is required.
152    ") Launch;
153    lldb::SBProcess
154    Launch (SBListener &listener,
155            char const **argv,
156            char const **envp,
157            const char *stdin_path,
158            const char *stdout_path,
159            const char *stderr_path,
160            const char *working_directory,
161            uint32_t launch_flags,   // See LaunchFlags
162            bool stop_at_entry,
163            lldb::SBError& error);
164
165    %feature("docstring", "
166    //------------------------------------------------------------------
167    /// Launch a new process with sensible defaults.
168    ///
169    /// @param[in] argv
170    ///     The argument array.
171    ///
172    /// @param[in] envp
173    ///     The environment array.
174    ///
175    /// @param[in] working_directory
176    ///     The working directory to have the child process run in
177    ///
178    /// Default: listener
179    ///     Set to the target's debugger (SBTarget::GetDebugger())
180    ///
181    /// Default: launch_flags
182    ///     Empty launch flags
183    ///
184    /// Default: stdin_path
185    /// Default: stdout_path
186    /// Default: stderr_path
187    ///     A pseudo terminal will be used.
188    ///
189    /// @return
190    ///      A process object for the newly created process.
191    //------------------------------------------------------------------
192
193    For example,
194
195        process = target.LaunchSimple(['X', 'Y', 'Z'], None, os.getcwd())
196
197    launches a new process by passing 'X', 'Y', 'Z' as the args to the
198    executable.
199    ") LaunchSimple;
200    lldb::SBProcess
201    LaunchSimple (const char **argv,
202                  const char **envp,
203                  const char *working_directory);
204
205    %feature("docstring", "
206    //------------------------------------------------------------------
207    /// Attach to process with pid.
208    ///
209    /// @param[in] listener
210    ///     An optional listener that will receive all process events.
211    ///     If \a listener is valid then \a listener will listen to all
212    ///     process events. If not valid, then this target's debugger
213    ///     (SBTarget::GetDebugger()) will listen to all process events.
214    ///
215    /// @param[in] pid
216    ///     The process ID to attach to.
217    ///
218    /// @param[out]
219    ///     An error explaining what went wrong if attach fails.
220    ///
221    /// @return
222    ///      A process object for the attached process.
223    //------------------------------------------------------------------
224    ") AttachToProcessWithID;
225    lldb::SBProcess
226    AttachToProcessWithID (SBListener &listener,
227                           lldb::pid_t pid,
228                           lldb::SBError& error);
229
230    %feature("docstring", "
231    //------------------------------------------------------------------
232    /// Attach to process with name.
233    ///
234    /// @param[in] listener
235    ///     An optional listener that will receive all process events.
236    ///     If \a listener is valid then \a listener will listen to all
237    ///     process events. If not valid, then this target's debugger
238    ///     (SBTarget::GetDebugger()) will listen to all process events.
239    ///
240    /// @param[in] name
241    ///     Basename of process to attach to.
242    ///
243    /// @param[in] wait_for
244    ///     If true wait for a new instance of 'name' to be launched.
245    ///
246    /// @param[out]
247    ///     An error explaining what went wrong if attach fails.
248    ///
249    /// @return
250    ///      A process object for the attached process.
251    //------------------------------------------------------------------
252    ") AttachToProcessWithName;
253    lldb::SBProcess
254    AttachToProcessWithName (SBListener &listener,
255                             const char *name,
256                             bool wait_for,
257                             lldb::SBError& error);
258
259    %feature("docstring", "
260    //------------------------------------------------------------------
261    /// Connect to a remote debug server with url.
262    ///
263    /// @param[in] listener
264    ///     An optional listener that will receive all process events.
265    ///     If \a listener is valid then \a listener will listen to all
266    ///     process events. If not valid, then this target's debugger
267    ///     (SBTarget::GetDebugger()) will listen to all process events.
268    ///
269    /// @param[in] url
270    ///     The url to connect to, e.g., 'connect://localhost:12345'.
271    ///
272    /// @param[in] plugin_name
273    ///     The plugin name to be used; can be NULL.
274    ///
275    /// @param[out]
276    ///     An error explaining what went wrong if the connect fails.
277    ///
278    /// @return
279    ///      A process object for the connected process.
280    //------------------------------------------------------------------
281    ") ConnectRemote;
282    lldb::SBProcess
283    ConnectRemote (SBListener &listener,
284                   const char *url,
285                   const char *plugin_name,
286                   SBError& error);
287
288    lldb::SBFileSpec
289    GetExecutable ();
290
291    bool
292    AddModule (lldb::SBModule &module);
293
294    lldb::SBModule
295    AddModule (const char *path,
296               const char *triple,
297               const char *uuid);
298
299    uint32_t
300    GetNumModules () const;
301
302    lldb::SBModule
303    GetModuleAtIndex (uint32_t idx);
304
305    bool
306    RemoveModule (lldb::SBModule module);
307
308    lldb::SBDebugger
309    GetDebugger() const;
310
311    lldb::SBModule
312    FindModule (const lldb::SBFileSpec &file_spec);
313
314    lldb::SBError
315    SetSectionLoadAddress (lldb::SBSection section,
316                           lldb::addr_t section_base_addr);
317
318    lldb::SBError
319    ClearSectionLoadAddress (lldb::SBSection section);
320
321    lldb::SBError
322    SetModuleLoadAddress (lldb::SBModule module,
323                          int64_t sections_offset);
324
325    lldb::SBError
326    ClearModuleLoadAddress (lldb::SBModule module);
327
328    %feature("docstring", "
329    //------------------------------------------------------------------
330    /// Find functions by name.
331    ///
332    /// @param[in] name
333    ///     The name of the function we are looking for.
334    ///
335    /// @param[in] name_type_mask
336    ///     A logical OR of one or more FunctionNameType enum bits that
337    ///     indicate what kind of names should be used when doing the
338    ///     lookup. Bits include fully qualified names, base names,
339    ///     C++ methods, or ObjC selectors.
340    ///     See FunctionNameType for more details.
341    ///
342    /// @param[in] append
343    ///     If true, any matches will be appended to \a sc_list, else
344    ///     matches replace the contents of \a sc_list.
345    ///
346    /// @param[out] sc_list
347    ///     A symbol context list that gets filled in with all of the
348    ///     matches.
349    ///
350    /// @return
351    ///     The number of matches added to \a sc_list.
352    //------------------------------------------------------------------
353    ") FindFunctions;
354    uint32_t
355    FindFunctions (const char *name,
356                   uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
357                   bool append,
358                   lldb::SBSymbolContextList& sc_list);
359
360    lldb::SBType
361    FindFirstType (const char* type);
362
363    lldb::SBTypeList
364    FindTypes (const char* type);
365
366    lldb::SBSourceManager
367    GetSourceManager ();
368
369    %feature("docstring", "
370    //------------------------------------------------------------------
371    /// Find global and static variables by name.
372    ///
373    /// @param[in] name
374    ///     The name of the global or static variable we are looking
375    ///     for.
376    ///
377    /// @param[in] max_matches
378    ///     Allow the number of matches to be limited to \a max_matches.
379    ///
380    /// @return
381    ///     A list of matched variables in an SBValueList.
382    //------------------------------------------------------------------
383    ") FindGlobalVariables;
384    lldb::SBValueList
385    FindGlobalVariables (const char *name,
386                         uint32_t max_matches);
387
388    void
389    Clear ();
390
391    lldb::SBAddress
392    ResolveLoadAddress (lldb::addr_t vm_addr);
393
394    SBSymbolContext
395    ResolveSymbolContextForAddress (const SBAddress& addr,
396                                    uint32_t resolve_scope);
397
398    lldb::SBBreakpoint
399    BreakpointCreateByLocation (const char *file, uint32_t line);
400
401    lldb::SBBreakpoint
402    BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
403
404    lldb::SBBreakpoint
405    BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
406
407    lldb::SBBreakpoint
408    BreakpointCreateByName (const char *symbol_name,
409                            uint32_t func_name_type,           // Logical OR one or more FunctionNameType enum bits
410                            const SBFileSpecList &module_list,
411                            const SBFileSpecList &comp_unit_list);
412
413    lldb::SBBreakpoint
414    BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
415
416    lldb::SBBreakpoint
417    BreakpointCreateBySourceRegex (const char *source_regex, const lldb::SBFileSpec &source_file, const char *module_name = NULL);
418
419    lldb::SBBreakpoint
420    BreakpointCreateByAddress (addr_t address);
421
422    uint32_t
423    GetNumBreakpoints () const;
424
425    lldb::SBBreakpoint
426    GetBreakpointAtIndex (uint32_t idx) const;
427
428    bool
429    BreakpointDelete (break_id_t break_id);
430
431    lldb::SBBreakpoint
432    FindBreakpointByID (break_id_t break_id);
433
434    bool
435    EnableAllBreakpoints ();
436
437    bool
438    DisableAllBreakpoints ();
439
440    bool
441    DeleteAllBreakpoints ();
442
443    uint32_t
444    GetNumWatchpoints () const;
445
446    lldb::SBWatchpoint
447    GetWatchpointAtIndex (uint32_t idx) const;
448
449    bool
450    DeleteWatchpoint (lldb::watch_id_t watch_id);
451
452    lldb::SBWatchpoint
453    FindWatchpointByID (lldb::watch_id_t watch_id);
454
455    bool
456    EnableAllWatchpoints ();
457
458    bool
459    DisableAllWatchpoints ();
460
461    bool
462    DeleteAllWatchpoints ();
463
464    lldb::SBWatchpoint
465    WatchAddress (lldb::addr_t addr,
466                  size_t size,
467                  bool read,
468                  bool write);
469
470
471    lldb::SBBroadcaster
472    GetBroadcaster () const;
473
474    lldb::SBInstructionList
475    GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
476
477    bool
478    GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
479};
480
481} // namespace lldb
482