Nemiver  0.3
nmv-i-debugger.h
Go to the documentation of this file.
1 // -*- c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-'
2 //Author: Dodji Seketeli
3 /*
4  *This file is part of the Nemiver project
5  *
6  *Nemiver is free software; you can redistribute
7  *it and/or modify it under the terms of
8  *the GNU General Public License as published by the
9  *Free Software Foundation; either version 2,
10  *or (at your option) any later version.
11  *
12  *Nemiver is distributed in the hope that it will
13  *be useful, but WITHOUT ANY WARRANTY;
14  *without even the implied warranty of
15  *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  *See the GNU General Public License for more details.
17  *
18  *You should have received a copy of the
19  *GNU General Public License along with Nemiver;
20  *see the file COPYING.
21  *If not, write to the Free Software Foundation,
22  *Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23  *
24  *See COPYRIGHT file copyright information.
25  */
26 #ifndef __NMV_I_DEBUGGER_H__
27 #define __NMV_I_DEBUGGER_H__
28 
29 #include <stdint.h>
30 #include <vector>
31 #include <string>
32 #include <map>
33 #include <list>
34 #include "common/nmv-api-macros.h"
35 #include "common/nmv-ustring.h"
38 #include "common/nmv-address.h"
39 #include "common/nmv-asm-instr.h"
40 #include "common/nmv-loc.h"
41 #include "common/nmv-str-utils.h"
42 #include "nmv-i-conf-mgr.h"
43 
58 using std::vector;
59 using std::string;
60 using std::map;
61 using std::list;
62 
63 NEMIVER_BEGIN_NAMESPACE (nemiver)
64 
65 class ILangTrait;
66 class IDebugger;
68 
75 
76  IDebugger (const IDebugger&);
77  IDebugger& operator= (const IDebugger&);
78 
79 protected:
80 
81  IDebugger (DynamicModule *a_dynmod) : DynModIface (a_dynmod)
82  {
83  }
84 
85 public:
86 
87  typedef unsigned int register_id_t;
88 
90  class Breakpoint {
91  public:
92 
93  enum Type {
94  UNDEFINED_TYPE = 0,
97  COUNTPOINT_TYPE
98  };
99 
100  private:
101  int m_number;
102  bool m_enabled;
103  Address m_address;
104  string m_function;
105  string m_expression;
106  UString m_file_name;
107  UString m_file_full_name;
108  string m_condition;
109  Type m_type;
110  int m_line;
111  int m_nb_times_hit;
112  // The ignore count set by the user.
113  int m_initial_ignore_count;
114  // The current ignore count. This one is decremented each
115  // time the breakpoint is hit.
116  int m_ignore_count;
117  bool m_is_read_watchpoint;
118  bool m_is_write_watchpoint;
119  // The list of sub-breakpoints, in case this breakpoint is a
120  // multiple breakpoint. In that case, each sub-breakpoint
121  // will be set to a real location of an overload function.
122  // Each sub-breakpoint will then have a non-nil
123  // m_parent_breakpoint pointer that points back to this
124  // instance, and an empty m_sub_breakpoints member.
125  vector<Breakpoint> m_sub_breakpoints;
126  // If this instance is a sub-breakpoint, i.e, a breakpoint to
127  // an overloaded function that has been set by name to all the
128  // overloads at the same time, then this is set to the id of
129  // the parent breakpoint. The parent breakpoint contains
130  // information that are relevant for all the sub-breakpoints.
131  int m_parent_breakpoint_number;
132  // Whether the breakpoint is pending.
133  bool m_is_pending;
134 
135  public:
136  Breakpoint () {clear ();}
137 
139 
141 
148  string id () const
149  {
150  if (is_sub_breakpoint ())
151  return (str_utils::int_to_string (parent_breakpoint_number ()) + "."
152  + str_utils::int_to_string (sub_breakpoint_number ()));
153  else
154  return str_utils::int_to_string (sub_breakpoint_number ());
155  }
156 
163  string parent_id () const
164  {
165  string id;
166  if (is_sub_breakpoint ())
167  id = str_utils::int_to_string(parent_breakpoint_number ());
168  else
169  id = str_utils::int_to_string (sub_breakpoint_number ());
170  return id;
171  }
172 
179  void id (string& s) const
180  {
181  s = number ();
182  }
183 
189  int number() const {return sub_breakpoint_number();}
190 
191  void number (int a_in) {m_number = a_in;}
192  int sub_breakpoint_number () const {return m_number;}
193 
194  bool enabled () const {return m_enabled;}
195  void enabled (bool a_in) {m_enabled = a_in;}
196 
197  const Address& address () const {return m_address;}
198  Address& address () {return m_address;}
199  void address (const string &a_in)
200  {
201  m_address = a_in;
202  if (!m_address.empty ())
203  m_is_pending = false;
204  }
205 
206  const string& function () const {return m_function;}
207  void function (const string &a_in) {m_function = a_in;}
208 
209  const string& expression () const {return m_expression;}
210  void expression (const string &a_expr) {m_expression = a_expr;}
211 
212  const UString& file_name () const {return m_file_name;}
213  void file_name (const UString &a_in) {m_file_name = a_in;}
214 
215  const UString& file_full_name () const {return m_file_full_name;}
216  void file_full_name (const UString &a_in) {m_file_full_name = a_in;}
217 
218  int line () const {return m_line;}
219  void line (int a_in) {m_line = a_in;}
220 
221  const string& condition () const {return m_condition;}
222  void condition (const string &a_cond) {m_condition = a_cond;}
223 
224  bool has_condition () const {return !m_condition.empty ();}
225 
226  int nb_times_hit () const {return m_nb_times_hit;}
227  void nb_times_hit (int a_nb) {m_nb_times_hit = a_nb;}
228 
231  int initial_ignore_count () const {return m_initial_ignore_count;}
232  void initial_ignore_count (int a) {m_initial_ignore_count = a;}
233 
237  int ignore_count () const {return m_ignore_count;}
238  void ignore_count (int a) {m_ignore_count = a;}
239 
240  bool is_read_watchpoint () const {return m_is_read_watchpoint;}
241  void is_read_watchpoint (bool f) {m_is_read_watchpoint = f;}
242 
243  bool is_write_watchpoint () const {return m_is_write_watchpoint;}
244  void is_write_watchpoint (bool f) {m_is_write_watchpoint = f;}
245 
246  bool is_pending () const {return m_is_pending;}
247  void is_pending (bool a) {m_is_pending = a;}
248 
255  bool has_multiple_locations () const {return !m_sub_breakpoints.empty ();}
256 
258  {
259  b.m_parent_breakpoint_number = m_number;
260  m_sub_breakpoints.push_back (b);
261  }
262 
263  const vector<Breakpoint>& sub_breakpoints () const
264  {
265  return m_sub_breakpoints;
266  }
267 
268  int parent_breakpoint_number () const {return m_parent_breakpoint_number;}
269 
270  bool is_sub_breakpoint () const {return !!parent_breakpoint_number ();}
271 
272  Type type () const {return m_type;}
273  void type (Type a_type) {m_type = a_type;}
274 
276 
278  void clear ()
279  {
280  m_type = STANDARD_BREAKPOINT_TYPE;
281  m_number = 0;
282  m_enabled = false;
283  m_address.clear ();
284  m_function.clear ();
285  m_file_name.clear ();
286  m_file_full_name.clear ();
287  m_line = 0;
288  m_condition.clear ();
289  m_nb_times_hit = 0;
290  m_initial_ignore_count = 0;
291  m_ignore_count = 0;
292  m_is_read_watchpoint = false;
293  m_is_write_watchpoint = false;
294  m_sub_breakpoints.clear ();
295  m_parent_breakpoint_number = 0;
296  m_is_pending = false;
297  }
298  };//end class Breakpoint
299 
308  public:
309  enum Kind {
310  CANCEL=0,
312  LOCATION
313  };
314 
315  private:
316  Kind m_kind;
317  int m_index;
318  UString m_function_name;
319  UString m_file_name;
320  int m_line_number;
321 
322  void init (Kind a_kind, int a_index,
323  const UString &a_function_name,
324  const UString &a_file_name,
325  int a_line_number)
326  {
327  kind (a_kind);
328  index (a_index);
329  function_name (a_function_name);
330  file_name (a_file_name);
331  line_number (a_line_number);
332  }
333 
334  public:
336  int a_index,
337  UString &a_function_name,
338  UString a_file_name,
339  int a_line_number)
340  {
341  init (a_kind, a_index, a_function_name,
342  a_file_name, a_line_number);
343  }
344 
346  {
347  init (CANCEL, 0, "", "", 0);
348  }
349 
350  Kind kind () const {return m_kind;}
351  void kind (Kind a_kind) {m_kind = a_kind;}
352 
353  int index () const {return m_index;}
354  void index (int a_index) {m_index = a_index;}
355 
356  const UString& function_name () const {return m_function_name;}
357  void function_name (const UString& a_in) {m_function_name = a_in;}
358 
359  const UString& file_name () const {return m_file_name;}
360  void file_name (const UString &a_in) {m_file_name = a_in;}
361 
362  int line_number () const {return m_line_number;}
363  void line_number (int a_in) {m_line_number = a_in;}
364  };//end class OverloadsChoiceEntry
365  typedef vector<OverloadsChoiceEntry> OverloadsChoiceEntries;
366 
367  class Variable;
369  typedef list<VariableSafePtr> VariableList;
370 
372  class Frame {
373  Address m_address;
374  string m_function_name;
375  map<string, string> m_args;
376  int m_level;
377  //present if the target has debugging info
378  UString m_file_name;
379  //present if the target has sufficient debugging info
380  UString m_file_full_name;
381  int m_line;
382  //present if the target doesn't have debugging info
383  string m_library;
384  public:
385 
386  Frame () :
387  m_level (0),
388  m_line (0)
389  {
390  }
391 
394 
395  bool operator== (const Frame &a) const
396  {
397  return (level () == a.level ()
398  && function_name () == a.function_name ()
399  && file_name () == a.file_name ()
400  && library () == a.library ());
401  }
402 
403  bool operator!= (const Frame &a) const {return !(operator== (a));}
404 
407 
409  const Address& address () const {return m_address;}
410  Address& address () {return m_address;}
411  void address (const Address &a_in) {m_address = a_in;}
412  bool has_empty_address () const
413  {
414  return m_address.to_string ().empty ();
415  }
416 
417  const string& function_name () const {return m_function_name;}
418  void function_name (const string &a_in) {m_function_name = a_in;}
419 
420  const map<string, string>& args () const {return m_args;}
421  map<string, string>& args () {return m_args;}
422 
423  int level () const {return m_level;}
424  void level (int a_level) {m_level = a_level;}
425 
426  const UString& file_name () const {return m_file_name;}
427  void file_name (const UString &a_in) {m_file_name = a_in;}
428 
429  const UString& file_full_name () const {return m_file_full_name;}
430  void file_full_name (const UString &a_in) {m_file_full_name = a_in;}
431 
432  int line () const {return m_line;}
433  void line (int a_in) {m_line = a_in;}
434 
435  const string& library () const {return m_library;}
436  void library (const string &a_library) {m_library = a_library;}
437 
439 
441  void clear ()
442  {
443  m_address = "";
444  m_function_name = "";
445  m_args.clear ();
446  m_level = 0;
447  m_file_name = "";
448  m_file_full_name = "";
449  m_line = 0;
450  m_library.clear ();
451  m_args.clear ();
452  }
453  };//end class Frame
454 
455  typedef sigc::slot<void> DefaultSlot;
456  typedef sigc::slot<void, const vector<IDebugger::Frame>&>
458  typedef sigc::slot<void, const map<int, IDebugger::VariableList>& >
460 
461  typedef sigc::slot<void, const VariableSafePtr> ConstVariableSlot;
462  typedef sigc::slot<void, const VariableList&> ConstVariableListSlot;
463  typedef sigc::slot<void, const UString&> ConstUStringSlot;
464 
465  class Variable : public Object {
466  public:
467  enum Format {
468  UNDEFINED_FORMAT = 0,
474  UNKNOWN_FORMAT // must be last
475  };
476  private:
477  // non copyable.
478  Variable (const Variable &);
479  Variable& operator= (const Variable &);
480 
481  VariableList m_members;
482  // If this variable was created with a backend counterpart
483  // (e.g: backend side variable objects in GDB), then this
484  // is the name of the backend side counterpart of this variable.
485  UString m_internal_name;
486  // If the variable was created with a backend counterpart
487  // (e.g, GDB Variable objects), then this client-side
488  // variable instance needs to have a hold on the instance of
489  // IDebugger that was used to create the variable. This is
490  // needed so that that instance of IDebugger can be used to
491  // tie the life cycle of the remote variable object peer with
492  // the life cycle of this instance.
493  mutable IDebugger *m_debugger;
494  UString m_name;
495  UString m_name_caption;
496  UString m_value;
497  UString m_type;
498  // When using GDB pretty-printers, this is a string naming the
499  // pretty printer used to visualize this variable. As
500  // disabling pretty printing is not possible globally in GDB
501  // we need to use this even when the user doesn't want to
502  // change it. Setting it to "" should do the right thing: if
503  // pretty printing is enabled, the variable will be displayed
504  // using the default pretty printer; if pretty printing is
505  // disabled the variable would be displayed using no pretty
506  // printer.
507  UString m_visualizer;
508  UString m_display_hint;
509  Variable *m_parent;
510  //if this variable is a pointer,
511  //it can be dereferenced. The variable
512  //it points to is stored in m_dereferenced
513  VariableSafePtr m_dereferenced;
514  unsigned int m_num_expected_children;
515  // The expression with which this variable
516  // Can be referenced in the debugger.
517  // If empty, it can be set by calling
518  // IDebugger::query_variable_path_expr()
519  UString m_path_expression;
520  bool m_in_scope;
521  Format m_format;
522  bool m_needs_revisualizing;
523  bool m_is_dynamic;
524  bool m_has_more_children;
525 
526  public:
527  explicit Variable (const UString &a_internal_name,
528  const UString &a_name,
529  const UString &a_value,
530  const UString &a_type,
531  bool a_in_scope = true,
532  IDebugger *a_dbg = 0)
533  : m_internal_name (a_internal_name),
534  m_debugger (a_dbg),
535  m_name (a_name),
536  m_value (a_value),
537  m_type (a_type),
538  m_parent (0),
539  m_num_expected_children (0),
540  m_in_scope (a_in_scope),
541  m_format (UNDEFINED_FORMAT),
542  m_needs_revisualizing (false),
543  m_is_dynamic (false),
544  m_has_more_children (false)
545  {
546  }
547 
548  explicit Variable (const UString &a_name,
549  const UString &a_value,
550  const UString &a_type,
551  bool a_in_scope = true,
552  IDebugger *a_dbg = 0)
553  : m_debugger (a_dbg),
554  m_name (a_name),
555  m_value (a_value),
556  m_type (a_type),
557  m_parent (0),
558  m_num_expected_children (0),
559  m_in_scope (a_in_scope),
560  m_format (UNDEFINED_FORMAT),
561  m_needs_revisualizing (false),
562  m_is_dynamic (false),
563  m_has_more_children (false)
564 
565  {
566  }
567 
568  explicit Variable (const UString &a_name,
569  IDebugger *a_dbg = 0)
570  : m_debugger (a_dbg),
571  m_name (a_name),
572  m_parent (0),
573  m_num_expected_children (0),
574  m_in_scope (true),
575  m_format (UNDEFINED_FORMAT),
576  m_needs_revisualizing (false),
577  m_is_dynamic (false),
578  m_has_more_children (false)
579 
580  {
581  }
582 
583  Variable (IDebugger *a_dbg = 0)
584  : m_debugger (a_dbg),
585  m_parent (0),
586  m_num_expected_children (0),
587  m_in_scope (true),
588  m_format (UNDEFINED_FORMAT),
589  m_needs_revisualizing (false),
590  m_is_dynamic (false),
591  m_has_more_children (false)
592  {
593  }
594 
596  {
597  // If this variable is peered with an engine-side variable
598  // object then ask the debugging engine to delete the peer
599  // variable object now.
600  if (m_debugger
601  && !internal_name ().empty ()
602  && m_debugger->is_attached_to_target ()) {
603  IDebugger::DefaultSlot empty_slot;
604  m_debugger->delete_variable (internal_name (),
605  empty_slot);
606  }
607  }
608 
609  const VariableList& members () const {return m_members;}
610 
611  VariableList& members () {return m_members;}
612 
622  bool get_member_at (int a_index,
623  VariableSafePtr &a_var) const
624  {
625  int i = 0;
626  for (VariableList::const_iterator it = members ().begin ();
627  it != m_members.end ();
628  ++it, ++i) {
629  if (i == a_index) {
630  a_var = *it;
631  return true;
632  }
633  }
634  return false;
635  }
636 
639  int sibling_index () const
640  {
641  if (!parent ())
642  return 0;
643  VariableList::const_iterator it;
644  int i = 0;
645  for (it = parent ()->members ().begin ();
646  it != parent ()->members ().end ();
647  ++it, ++i) {
648  if (*it == this)
649  return i;
650  }
651  THROW ("fatal: should not be reached");
652  }
653 
654  bool operator== (const Variable &a_other) const
655  {
656  return equals (a_other);
657  }
658 
659  // Tests if this variable equals another one, by first
660  // considering the variables' internal names, if they have
661  // any. Otherwise, tests if they are equal by value, i.e,
662  // compare them memberwise.
663  bool equals (const Variable &a_other) const
664  {
665  if (!internal_name ().empty ()
666  && !a_other.internal_name ().empty ())
667  return internal_name () == a_other.internal_name ();
668  return equals_by_value (a_other);
669  }
670 
677  bool equals_by_value (const Variable &a_other) const
678  {
679  if (name () != a_other.name ()
680  || type () != a_other.type ())
681  return false;
682  if (members ().empty () != a_other.members ().empty ())
683  return false;
684  VariableList::const_iterator it0, it1;
685  for (it0 = members ().begin (), it1 = a_other.members ().begin ();
686  it0 != members ().end ();
687  ++it0, ++it1) {
688  if (it1 == a_other.members ().end ())
689  return false;
690  if (!(*it0)->equals_by_value (**it1))
691  return false;
692  }
693  if (it1 != a_other.members ().end ())
694  return false;
695  return true;
696  }
697 
698  void append (const VariableSafePtr &a_var)
699  {
700  if (!a_var) {return;}
701  m_members.push_back (a_var);
702  a_var->parent (this);
703  }
704 
711  const UString& internal_name () const {return m_internal_name;}
712 
716  void internal_name (const UString &a_in) {m_internal_name = a_in;}
717 
721  const UString& id () const
722  { return internal_name ().empty ()
723  ? name ()
724  : internal_name ();
725  }
726 
727  IDebugger* debugger () const {return m_debugger;}
728  void debugger (IDebugger *a_dbg) {m_debugger = a_dbg;}
729 
730  const UString& name () const {return m_name;}
731  void name (const UString &a_name)
732  {
733  m_name_caption = a_name;
734  m_name = a_name;
735  }
736 
737  const UString& name_caption () const {return m_name_caption;}
738  void name_caption (const UString &a_n) {m_name_caption = a_n;}
739 
740  const UString& value () const {return m_value;}
741  void value (const UString &a_value) {m_value = a_value;}
742 
743  const UString& type () const {return m_type;}
744  void type (const UString &a_type) {m_type = a_type;}
745  void type (const string &a_type) {m_type = a_type;}
746 
747  const UString& visualizer () const {return m_visualizer;}
748  void visualizer (const UString &a) {m_visualizer = a;}
749 
750  const UString& display_hint () const {return m_display_hint;};
751  void display_hint (const UString &a) {m_display_hint = a;}
752 
755  bool has_parent () const
756  {
757  return m_parent != 0;
758  }
759 
773  bool is_morally_root () const
774  {
775  if (has_parent ())
776  return false;
777  if (internal_name ().empty ())
778  return !has_parent ();
779  return (internal_name ().find (".") == UString::npos);
780  }
781 
783  const VariableSafePtr parent () const
784  {
785  VariableSafePtr parent (m_parent, true/*add a reference*/);
786  return parent;
787  }
788 
795  void parent (Variable *a_parent)
796  {
797  m_parent = a_parent;
798  }
799 
801  const VariableSafePtr root () const
802  {
803  if (!has_parent ()) {
804  return VariableSafePtr (this, true /*increase refcount*/);
805  }
806  return parent ()->root ();
807  }
808 
809  void to_string (UString &a_str,
810  bool a_show_var_name = false,
811  const UString &a_indent_str="") const
812  {
813  if (a_show_var_name) {
814  if (name () != "") {
815  a_str += a_indent_str + name ();
816  }
817 
818  if (!internal_name ().empty ()) {
819  a_str += "(" + internal_name () + ")";
820  }
821  }
822  if (value () != "") {
823  if (a_show_var_name) {
824  a_str += "=";
825  }
826  a_str += value ();
827  }
828  if (members ().empty ()) {
829  return;
830  }
831  UString indent_str = a_indent_str + " ";
832  a_str += "\n" + a_indent_str + "{";
833  VariableList::const_iterator it;
834  for (it = members ().begin (); it != members ().end (); ++it) {
835  if (!(*it)) {continue;}
836  a_str += "\n";
837  (*it)->to_string (a_str, true, indent_str);
838  }
839  a_str += "\n" + a_indent_str + "}";
840  a_str.chomp ();
841  }
842 
843  void build_qname (UString &a_qname) const
844  {
845  UString qname;
846  if (!parent ()) {
847  a_qname = name ();
848  if (!a_qname.raw ().empty () && a_qname.raw ()[0] == '*') {
849  a_qname.erase (0, 1);
850  }
851  } else if (parent ()) {
852  parent ()->build_qname (qname);
853  qname.chomp ();
854  if (parent () && parent ()->name ()[0] == '*') {
855  qname += "->" + name ();
856  } else {
857  qname += "." + name ();
858  }
859  a_qname = qname;
860  } else {
861  THROW ("should not be reached");
862  }
863  }
864 
866  {
867  UString qname;
868  if (!parent ()) {
869  a_qname = internal_name ();
870  } else if (parent ()) {
871  parent ()->build_qname (qname);
872  qname.chomp ();
873  qname += "." + name ();
874  a_qname = qname;
875  } else {
876  THROW ("should not be reached");
877  }
878  }
879 
881  {
882  m_dereferenced = a_derefed;
883  }
884 
886  {
887  return m_dereferenced;
888  }
889 
891  {
892  if (m_dereferenced) {return true;}
893  return false;
894  }
895 
896  bool is_copyable (const Variable &a_other) const
897  {
898  if (a_other.type () != type ()) {
899  //can't copy a variable of different type
900  return false;
901  }
902  //both variables must have same members
903  if (members ().size () != a_other.members ().size ()) {
904  return false;
905  }
906 
907  VariableList::const_iterator it1, it2;
908  //first make sure our members have the same types as their members
909  for (it1=members ().begin (), it2=a_other.members ().begin ();
910  it1 != members ().end ();
911  it1++, it2++) {
912  if (!*it1 || !*it2)
913  return false;
914  if (!(*it1)->is_copyable (**it2))
915  return false;
916  }
917  return true;
918  }
919 
920  bool copy (const Variable &a_other)
921  {
922  if (!is_copyable (a_other))
923  return false;
924  m_name = a_other.m_name;
925  m_name_caption = a_other.m_name_caption;
926  m_value = a_other.m_value;
927  VariableList::iterator it1;
928  VariableList::const_iterator it2;
929  for (it1=m_members.begin (), it2=a_other.m_members.begin ();
930  it1 != m_members.end ();
931  it1++, it2++) {
932  (*it1)->copy (**it2);
933  }
934  return true;
935  }
936 
937  void set (const Variable &a_other)
938  {
939  m_name = a_other.m_name;
940  m_value = a_other.m_value;
941  m_type = a_other.m_type;
942  VariableList::const_iterator it;
943  m_members.clear ();
944  for (it = a_other.m_members.begin ();
945  it != a_other.m_members.end ();
946  ++it) {
947  VariableSafePtr var;
948  var.reset (new Variable ());
949  var->set (**it);
950  append (var);
951  }
952  }
953 
954  unsigned int num_expected_children () const
955  {
956  return m_num_expected_children;
957  }
958 
959  void num_expected_children (unsigned int a_in)
960  {
961  m_num_expected_children = a_in;
962  }
963 
964  bool expects_children () const
965  {
966  return ((m_num_expected_children != 0)
967  || (has_more_children ()));
968  }
969 
972  bool needs_unfolding () const
973  {
974  return (expects_children () && members ().empty ());
975  }
976 
980  const VariableSafePtr get_descendant
981  (const UString &a_internal_path) const
982  {
983  VariableSafePtr result;
984  if (internal_name () == a_internal_path) {
985  result.reset (this, true /*take refcount*/);
986  return result;
987  }
988  for (VariableList::const_iterator it = m_members.begin ();
989  it != m_members.end ();
990  ++it) {
991  if (*it && (*it)->internal_name () == a_internal_path) {
992  return *it;
993  }
994  result = (*it)->get_descendant (a_internal_path);
995  if (result) {
996  return result;
997  }
998  }
999  return result;
1000  }
1001 
1002  const UString& path_expression () const
1003  {
1004  return m_path_expression;
1005  }
1006  void path_expression (const UString &a_expr)
1007  {
1008  m_path_expression = a_expr;
1009  }
1010 
1011  bool in_scope () const {return m_in_scope;}
1012  void in_scope (bool a) {m_in_scope = a;}
1013 
1014  Format format () const {return m_format;}
1015  void format (Format a_format) {m_format = a_format;}
1016 
1017  bool needs_revisualizing () const {return m_needs_revisualizing;}
1018  void needs_revisualizing (bool a) {m_needs_revisualizing = a;}
1019 
1020  bool is_dynamic () const {return m_is_dynamic;}
1021  void is_dynamic (bool a) {m_is_dynamic = a;}
1022 
1023  bool has_more_children () const {return m_has_more_children;}
1024  void has_more_children (bool a) {m_has_more_children = a;}
1025 
1026  };//end class Variable
1027 
1028  enum State {
1029  // The inferior hasn't been loaded.
1030  NOT_STARTED=0,
1031  // The inferior has been loaded, but hasn't been run yet.
1033  // The inferior has started its execution, but is currently
1034  // stopped.
1036  // The inferior is currently busy running.
1038  // The inferior has exited.
1039  PROGRAM_EXITED
1040  };//enum State
1041 
1042  static UString state_to_string (State a_state)
1043  {
1044  UString str;
1045  switch (a_state) {
1046  case NOT_STARTED:
1047  str = "NOT_STARTED";
1048  break;
1049  case INFERIOR_LOADED:
1050  str = "INFERIOR_LOADED";
1051  break;
1052  case READY:
1053  str = "READY";
1054  break;
1055  case RUNNING:
1056  str = "RUNNING";
1057  break;
1058  case PROGRAM_EXITED:
1059  str = "PROGRAM_EXITED";
1060  break;
1061  }
1062  return str;
1063  }
1064 
1065  enum StopReason {
1066  UNDEFINED_REASON=0,
1078  SIGNAL_RECEIVED
1079  };//end enum StopReason
1080 
1082  static bool is_exited (enum StopReason a_reason)
1083  {
1084  if (a_reason == EXITED_SIGNALLED
1085  || a_reason == EXITED
1086  || a_reason == EXITED_NORMALLY)
1087  return true;
1088  return false;
1089  }
1090 
1091  typedef sigc::slot<void,
1092  const std::map<string, IDebugger::Breakpoint>&>
1094 
1095  typedef sigc::slot<void, Loc&> LocSlot;
1096 
1097  virtual ~IDebugger () {}
1098 
1100 
1102 
1103  virtual sigc::signal<void>& engine_died_signal () const = 0;
1104 
1105  virtual sigc::signal<void>& program_finished_signal () const = 0;
1106 
1107  virtual sigc::signal<void, const UString&>&
1108  console_message_signal () const = 0;
1109 
1110  virtual sigc::signal<void, const UString&>&
1111  target_output_message_signal () const = 0;
1112 
1113  virtual sigc::signal<void, const UString&>& log_message_signal () const=0;
1114 
1115  virtual sigc::signal<void,
1116  const UString&/*command name*/,
1117  const UString&/*command cookie*/>&
1118  command_done_signal () const=0;
1119 
1120  virtual sigc::signal<void>& connected_to_server_signal () const=0;
1121 
1122  virtual sigc::signal<void>& detached_from_target_signal () const=0;
1123 
1126  virtual sigc::signal<void>& inferior_re_run_signal () const = 0;
1127 
1128  virtual sigc::signal<void,
1129  const IDebugger::Breakpoint&,
1130  const string& /*breakpoint number*/,
1131  const UString & /*cookie*/>&
1132  breakpoint_deleted_signal () const=0;
1133 
1139  virtual sigc::signal<void,
1140  const map<string, IDebugger::Breakpoint>&,
1141  const UString& /*cookie*/>&
1142  breakpoints_list_signal () const=0;
1143 
1144  virtual sigc::signal<void,
1145  const std::map<string, IDebugger::Breakpoint>&,
1146  const UString& /*cookie*/>&
1147  breakpoints_set_signal () const = 0;
1148 
1149  virtual sigc::signal<void,
1150  const vector<OverloadsChoiceEntry>&,
1151  const UString& /*cookie*/>&
1152  got_overloads_choice_signal () const=0;
1153 
1154  virtual sigc::signal<void,
1155  IDebugger::StopReason /*reason*/,
1156  bool /*has frame*/,
1157  const IDebugger::Frame&/*the frame*/,
1158  int /*thread id*/,
1159  const string& /*breakpoint number,
1160  meaningfull only when
1161  reason == IDebugger::BREAKPOINT_HIT*/,
1162  const UString& /*cookie*/>& stopped_signal () const=0;
1163 
1164  virtual sigc::signal<void,
1165  const list<int>/*thread ids*/,
1166  const UString& /*cookie*/>&
1167  threads_listed_signal () const =0;
1168 
1169  virtual sigc::signal<void,
1170  int/*thread id*/,
1171  const IDebugger::Frame *const/*frame in thread*/,
1172  const UString& /*cookie*/> &
1173  thread_selected_signal () const=0;
1174 
1175  virtual sigc::signal<void,
1176  const vector<IDebugger::Frame>&,
1177  const UString&>& frames_listed_signal () const=0;
1178 
1179  virtual sigc::signal<void,
1180  //a frame number/argument list map
1181  const map<int, list<IDebugger::VariableSafePtr> >&,
1182  const UString& /*cookie*/>&
1183  frames_arguments_listed_signal () const=0;
1184 
1188  virtual sigc::signal<void,
1189  const IDebugger::Frame&,
1190  const UString& /*cookie*/>&
1191  current_frame_signal () const = 0;
1192 
1193 
1194  virtual sigc::signal<void, const VariableList&, const UString& >&
1195  local_variables_listed_signal () const = 0;
1196 
1197  virtual sigc::signal<void, const VariableList&, const UString& >&
1198  global_variables_listed_signal () const = 0;
1199 
1201  virtual sigc::signal<void,
1202  const UString&/*variable name*/,
1203  const VariableSafePtr /*variable*/,
1204  const UString& /*cookie*/>&
1205  variable_value_signal () const = 0;
1206 
1208  virtual sigc::signal<void,
1209  const VariableSafePtr /*variable*/,
1210  const UString& /*cookie*/>&
1211  variable_value_set_signal () const = 0;
1212 
1213  virtual sigc::signal<void,
1214  const UString&/*variable name*/,
1215  const VariableSafePtr /*variable*/,
1216  const UString& /*cookie*/>&
1217  pointed_variable_value_signal () const = 0;
1218 
1220  virtual sigc::signal<void,
1221  const UString&/*variable name*/,
1222  const UString&/*type*/,
1223  const UString&/*cookie*/>&
1224  variable_type_signal () const = 0;
1225  virtual sigc::signal<void,
1226  const VariableSafePtr /*variable*/,
1227  const UString&/*cookie*/>&
1228  variable_type_set_signal () const=0;
1229 
1231  virtual sigc::signal<void,
1232  const VariableSafePtr/*the variable we derefed*/,
1233  const UString&/*cookie*/>&
1234  variable_dereferenced_signal () const=0;
1235 
1236  sigc::signal<void, const VariableSafePtr, const UString&>&
1237  variable_visualized_signal () const;
1238 
1239  virtual sigc::signal<void, const vector<UString>&, const UString&>&
1240  files_listed_signal () const = 0;
1241 
1242  virtual sigc::signal<void,
1243  int/*pid*/,
1244  const UString&/*target path*/>&
1245  got_target_info_signal () const = 0;
1246 
1247  virtual sigc::signal<void>& running_signal () const=0;
1248 
1249  virtual sigc::signal<void,
1250  const UString&/*signal name*/,
1251  const UString&/*signal description*/>&
1252  signal_received_signal () const = 0;
1253 
1254  virtual sigc::signal<void, const UString&/*error message*/>&
1255  error_signal () const = 0;
1256 
1257  virtual sigc::signal<void, IDebugger::State>&
1258  state_changed_signal () const = 0;
1259 
1260  virtual sigc::signal<void,
1261  const std::map<register_id_t, UString>&,
1262  const UString& >&
1263  register_names_listed_signal () const = 0;
1264 
1265  virtual sigc::signal<void,
1266  const std::map<register_id_t, UString>&,
1267  const UString& >&
1268  register_values_listed_signal () const = 0;
1269 
1270  virtual sigc::signal<void,
1271  const UString&/*register name*/,
1272  const UString&/*register value*/,
1273  const UString&/*cookie*/>&
1274  register_value_changed_signal () const = 0;
1275 
1276  virtual sigc::signal<void,
1277  const std::list<register_id_t>&,
1278  const UString& >&
1279  changed_registers_listed_signal () const = 0;
1280 
1281  virtual sigc::signal <void,
1282  size_t,/*start address*/
1283  const std::vector<uint8_t>&,/*values*/
1284  const UString&>&/*cookie*/
1285  read_memory_signal () const = 0;
1286  virtual sigc::signal <void,
1287  size_t,/*start address*/
1288  const std::vector<uint8_t>&,/*values*/
1289  const UString& >&
1290  set_memory_signal () const = 0;
1291 
1292  // TODO: export informations about what file is being disassembled,
1293  // what function, which line (if possible) etc.
1294  // So that the code receiving the signal can adjust accordingly
1295  virtual sigc::signal<void,
1296  const DisassembleInfo&,
1297  const std::list<Asm>&,
1298  const UString& /*cookie*/>&
1299  instructions_disassembled_signal () const = 0;
1300 
1301  virtual sigc::signal<void, const VariableSafePtr, const UString&>&
1302  variable_created_signal () const = 0;
1303 
1310  virtual sigc::signal<void, const VariableSafePtr, const UString&>&
1311  variable_deleted_signal () const = 0;
1312 
1313  virtual sigc::signal<void, const VariableSafePtr, const UString&>&
1314  variable_unfolded_signal () const = 0;
1315 
1316  virtual sigc::signal<void, const VariableSafePtr, const UString&>&
1317  variable_expression_evaluated_signal () const = 0;
1318 
1325  virtual sigc::signal<void, const VariableList&, const UString&>&
1326  changed_variables_signal () const = 0;
1327 
1328  virtual sigc::signal<void, VariableSafePtr, const UString&>&
1329  assigned_variable_signal () const = 0;
1331 
1332  virtual void do_init (IConfMgrSafePtr a_conf_mgr) = 0;
1333 
1334  virtual map<UString, UString>& properties () = 0;
1335 
1336  virtual void set_event_loop_context
1337  (const Glib::RefPtr<Glib::MainContext> &) = 0;
1338 
1339  virtual void run_loop_iterations (int a_nb_iters) = 0;
1340 
1341  virtual bool busy () const = 0;
1342 
1343  virtual void set_non_persistent_debugger_path
1344  (const UString &a_full_path) = 0;
1345 
1346  virtual const UString& get_debugger_full_path () const = 0;
1347 
1348  virtual void set_solib_prefix_path (const UString &a_name) = 0;
1349 
1350  virtual bool load_program (const UString &a_prog) = 0;
1351 
1352  virtual bool load_program (const UString &a_prog,
1353  const vector<UString> &a_args) = 0;
1354 
1355  virtual bool load_program (const UString &a_prog,
1356  const vector<UString> &a_args,
1357  const UString &a_working_dir,
1358  bool a_force = false) = 0;
1359 
1360  virtual bool load_program
1361  (const UString &a_prog,
1362  const vector<UString> &a_argv,
1363  const UString &working_dir,
1364  const vector<UString> &a_source_search_dirs,
1365  const UString &a_slave_tty_path,
1366  int a_slave_tty_fd,
1367  bool a_uses_launch_tty = false,
1368  bool a_force = false) = 0;
1369 
1370  virtual void load_core_file (const UString &a_prog_file,
1371  const UString &a_core_file) = 0;
1372 
1373  virtual bool attach_to_target (unsigned int a_pid,
1374  const UString &a_tty_path="") = 0;
1375 
1376  virtual bool attach_to_remote_target (const UString &a_host,
1377  unsigned a_port) = 0;
1378 
1379  virtual bool attach_to_remote_target (const UString &a_serial_line) = 0;
1380 
1381  virtual void detach_from_target (const UString &a_cookie="") = 0;
1382 
1383  virtual void disconnect_from_remote_target (const UString &a_cookie = "") = 0;
1384 
1385  virtual bool is_attached_to_target () const = 0;
1386 
1387  virtual void set_tty_path (const UString &a_tty_path) = 0;
1388 
1389  virtual void add_env_variables (const map<UString, UString> &a_vars) = 0;
1390 
1391  virtual map<UString, UString>& get_env_variables () = 0;
1392 
1393  virtual const UString& get_target_path () = 0;
1394 
1395  virtual void get_target_info (const UString &a_cookie="") = 0;
1396 
1397  virtual ILangTrait& get_language_trait () = 0;
1398 
1399  virtual bool is_variable_editable (const VariableSafePtr a_var) const = 0;
1400 
1401  virtual bool is_running () const = 0;
1402 
1403  virtual void do_continue (const UString &a_cookie="") = 0;
1404 
1405  virtual void run (const UString &a_cookie="") = 0;
1406 
1407  virtual void re_run (const DefaultSlot &) = 0;
1408 
1409  virtual IDebugger::State get_state () const = 0;
1410 
1411  virtual int get_current_frame_level () const = 0;
1412 
1413  virtual bool stop_target () = 0;
1414 
1415  virtual void exit_engine () = 0;
1416 
1417  virtual void step_over (const UString &a_cookie="") = 0;
1418 
1419  virtual void step_in (const UString &a_cookie="") = 0;
1420 
1421  virtual void step_out (const UString &a_cookie="") = 0;
1422 
1423  virtual void step_over_asm (const UString &a_cookie="") = 0;
1424 
1425  virtual void step_in_asm (const UString &a_cookie="") = 0;
1426 
1427  virtual void continue_to_position (const UString &a_path,
1428  gint a_line_num,
1429  const UString &a_cookie="") = 0;
1430 
1431  virtual void jump_to_position (const Loc &a_loc,
1432  const DefaultSlot &a_slot) = 0;
1433 
1434  virtual void set_breakpoint (const common::Loc &a_loc,
1435  const UString &a_condition,
1436  gint a_ignore_count,
1437  const BreakpointsSlot &a_slot,
1438  const UString &a_cookie = "") = 0;
1439 
1440  virtual void set_breakpoint (const UString &a_path,
1441  gint a_line_num,
1442  const UString &a_condition= "",
1443  gint a_ignore_count = 0,
1444  const UString &a_cookie = "") = 0;
1445 
1446  virtual void set_breakpoint (const UString &a_func_name,
1447  const UString &a_condition = "",
1448  gint a_ignore_count = 0,
1449  const UString &a_cookie = "") = 0;
1450 
1451  virtual void set_breakpoint (const UString &a_func_name,
1452  const BreakpointsSlot &a_slot,
1453  const UString &a_condition = "",
1454  gint a_ignore_count = 0,
1455  const UString &a_cookie = "") = 0;
1456 
1457  virtual void set_breakpoint (const Address &a_address,
1458  const UString &a_condition = "",
1459  gint a_ignore_count = 0,
1460  const UString &a_cookie = "") = 0;
1461 
1462  virtual void enable_breakpoint (const string& a_break_num,
1463  const BreakpointsSlot &a_slot,
1464  const UString &a_cookie="") = 0;
1465 
1466  virtual void enable_breakpoint (const string& a_break_num,
1467  const UString &a_cookie="") = 0;
1468 
1469  virtual void disable_breakpoint (const string& a_break_num,
1470  const UString &a_cookie="") = 0;
1471 
1472  virtual void set_breakpoint_ignore_count
1473  (const string& a_break_num,
1474  gint a_ignore_count,
1475  const UString &a_cookie = "") = 0;
1476 
1477  virtual void set_breakpoint_condition (const string& a_break_num,
1478  const UString &a_condition,
1479  const UString &a_cookie = "") = 0;
1480 
1481  virtual void enable_countpoint (const string& a_break_num,
1482  bool a_flag,
1483  const UString &a_cookie ="") = 0;
1484 
1485  virtual bool is_countpoint (const string &a_break_num) const = 0;
1486 
1487  virtual bool is_countpoint (const Breakpoint &a_breakpoint) const = 0;
1488 
1489  virtual void delete_breakpoint (const UString &a_path,
1490  gint a_line_num,
1491  const UString &a_cookie="") = 0;
1492 
1493  virtual void set_watchpoint (const UString &a_expression,
1494  bool a_write = true,
1495  bool a_read = false,
1496  const UString &a_cookie = "") = 0;
1497 
1498  virtual void set_catch (const UString &a_event,
1499  const UString &a_cookie="") = 0;
1500 
1501  virtual void list_breakpoints (const UString &a_cookie="") = 0;
1502 
1503  virtual const map<string, Breakpoint>& get_cached_breakpoints () = 0;
1504 
1505  virtual bool get_breakpoint_from_cache (const string &a_num,
1506  IDebugger::Breakpoint &a_bp)
1507  const = 0;
1508 
1509  virtual void choose_function_overload (int a_overload_number,
1510  const UString &a_cookie="") = 0;
1511 
1512  virtual void choose_function_overloads (const vector<int> &a_numbers,
1513  const UString &a_cookie="") = 0;
1514 
1515  virtual void delete_breakpoint (const string &a_break_num,
1516  const UString &a_cookie="") = 0;
1517 
1518  virtual void list_threads (const UString &a_cookie="") = 0;
1519 
1520  virtual void select_thread (unsigned int a_thread_id,
1521  const UString &a_cookie="") = 0;
1522 
1523  virtual unsigned int get_current_thread () const = 0;
1524 
1525  virtual void select_frame (int a_frame_id,
1526  const UString &a_cookie="") = 0;
1527 
1528  virtual void list_frames (int a_low_frame=-1,
1529  int a_high_frame=-1,
1530  const UString &a_cookie="") = 0;
1531 
1532  virtual void list_frames (int a_low_frame,
1533  int a_high_frame,
1534  const FrameVectorSlot &a_slot,
1535  const UString &a_cookie) = 0;
1536 
1537  virtual void list_frames_arguments (int a_low_frame=-1,
1538  int a_high_frame=-1,
1539  const UString &a_cookie="") = 0;
1540 
1541  virtual void list_frames_arguments (int a_low_frame,
1542  int a_high_frame,
1543  const FrameArgsSlot &a_slot,
1544  const UString &a_cookie) = 0;
1545 
1546  virtual void list_local_variables (const ConstVariableListSlot &a_slot,
1547  const UString &a_cookie="") = 0;
1548 
1549  virtual void list_local_variables (const UString &a_cookie="") = 0;
1550 
1551  virtual void list_global_variables (const UString &a_cookie="") = 0;
1552 
1553  virtual void evaluate_expression (const UString &a_expr,
1554  const UString &a_cookie="") = 0;
1555 
1556  virtual void call_function (const UString &a_call_expression,
1557  const UString &a_cookie="") = 0;
1558 
1559  virtual void print_variable_value (const UString &a_var_name,
1560  const UString &a_cookie="") = 0;
1561 
1562  virtual void get_variable_value (const VariableSafePtr &a_var,
1563  const UString &a_cookie="") = 0;
1564 
1565  virtual void print_pointed_variable_value (const UString &a_var_name,
1566  const UString &a_cookie="")=0;
1567 
1568  virtual void print_variable_type (const UString &a_var_name,
1569  const UString &a_cookie="") = 0;
1570 
1571  virtual void get_variable_type (const VariableSafePtr &a_var,
1572  const UString &a_cookie="") = 0;
1573 
1574  virtual bool dereference_variable (const VariableSafePtr &a_var,
1575  const UString &a_cookie="") = 0;
1576 
1577  virtual void revisualize_variable (const VariableSafePtr a_var,
1578  const ConstVariableSlot &a_slot) = 0;
1579 
1580  virtual void list_files (const UString &a_cookie="") = 0;
1581 
1582  virtual void list_register_names (const UString &a_cookie="") = 0;
1583  virtual void list_changed_registers (const UString &a_cookie="") = 0;
1584  virtual void list_register_values (const UString &a_cookie="") = 0;
1585  virtual void list_register_values (std::list<register_id_t> a_registers,
1586  const UString &a_cookie="") = 0;
1587  virtual void set_register_value (const UString& a_reg_name,
1588  const UString& a_value,
1589  const UString& a_cookie="") = 0;
1590 
1591  virtual void read_memory (size_t a_start_addr, size_t a_num_bytes,
1592  const UString& a_cookie="") = 0;
1593  virtual void set_memory (size_t a_addr,
1594  const std::vector<uint8_t>& a_bytes,
1595  const UString& a_cookie="") = 0;
1596 
1597  typedef sigc::slot<void,
1598  const DisassembleInfo&,
1599  const std::list<Asm>& > DisassSlot;
1600 
1601  virtual void disassemble (size_t a_start_addr,
1602  bool a_start_addr_relative_to_pc,
1603  size_t a_end_addr,
1604  bool a_end_addr_relative_to_pc,
1605  bool a_pure_asm = true,
1606  const UString &a_cookie = "") = 0;
1607 
1608  virtual void disassemble (size_t a_start_addr,
1609  bool a_start_addr_relative_to_pc,
1610  size_t a_end_addr,
1611  bool a_end_addr_relative_to_pc,
1612  const DisassSlot &a_slot,
1613  bool a_pure_asm = true,
1614  const UString &a_cookie = "") = 0;
1615 
1616  virtual void disassemble_lines (const UString &a_file_name,
1617  int a_line_num,
1618  int a_nb_disassembled_lines,
1619  bool a_pure_asm = true,
1620  const UString &a_cookie = "") = 0;
1621 
1622  virtual void disassemble_lines (const UString &a_file_name,
1623  int a_line_num,
1624  int a_nb_disassembled_lines,
1625  const DisassSlot &a_slot,
1626  bool a_pure_asm = true,
1627  const UString &a_cookie = "") = 0;
1628 
1629  virtual void create_variable (const UString &a_name,
1630  const UString &a_cookie = "") = 0;
1631 
1632  virtual void create_variable (const UString &a_name,
1633  const ConstVariableSlot &a_slot,
1634  const UString &a_cookie = "") = 0;
1635 
1651  virtual void delete_variable (const VariableSafePtr a_var,
1652  const UString &a_cookie = "") = 0;
1653 
1672  virtual void delete_variable (const VariableSafePtr a_var,
1673  const ConstVariableSlot&,
1674  const UString &a_cookie = "") = 0;
1675 
1694  virtual void delete_variable (const UString &a_internal_name,
1695  const DefaultSlot &a_slot,
1696  const UString &a_cookie = "") = 0;
1697 
1698  virtual void unfold_variable (VariableSafePtr a_var,
1699  const UString &a_cookie = "") = 0;
1700  virtual void unfold_variable
1701  (VariableSafePtr a_var,
1702  const ConstVariableSlot&,
1703  const UString &a_cookie = "") = 0;
1704 
1705  virtual void assign_variable (const VariableSafePtr a_var,
1706  const UString &a_expression,
1707  const UString &a_cookie = "") = 0;
1708 
1709  virtual void assign_variable
1710  (const VariableSafePtr a_var,
1711  const UString &a_expression,
1712  const ConstVariableSlot &a_slot,
1713  const UString &a_cookie="") = 0;
1714 
1715  virtual void evaluate_variable_expr (const VariableSafePtr a_var,
1716  const UString &a_cookie = "") = 0;
1717  virtual void evaluate_variable_expr
1718  (const VariableSafePtr a_var,
1719  const ConstVariableSlot &a_slot,
1720  const UString &a_cookie = "")= 0;
1721 
1730  virtual void list_changed_variables (VariableSafePtr a_root,
1731  const UString &a_cookie = "") = 0;
1732 
1744  virtual void list_changed_variables
1745  (VariableSafePtr a_root,
1746  const ConstVariableListSlot &a_slot,
1747  const UString &a_cookie="") = 0;
1748 
1749  virtual void query_variable_path_expr (const VariableSafePtr a_var,
1750  const UString &a_cookie = "") = 0;
1751 
1752  virtual void query_variable_path_expr (const VariableSafePtr a_var,
1753  const ConstVariableSlot &a_slot,
1754  const UString &a_cookie = "") = 0;
1755 
1756  virtual void query_variable_format (const VariableSafePtr a_var,
1757  const ConstVariableSlot &a_slot,
1758  const UString &a_cookie = "") = 0;
1759 
1760  virtual void set_variable_format (const VariableSafePtr a_var,
1761  const Variable::Format a_format,
1762  const UString &a_cookie = "") = 0;
1763 
1764  virtual void enable_pretty_printing (bool a_flag = true) = 0;
1765 
1766 };//end IDebugger
1767 
1768 NEMIVER_END_NAMESPACE (nemiver)
1769 
1770 #endif //__NMV_I_DEBUGGER_H__
1771 
nemiver::IDebugger::Breakpoint::expression
const string & expression() const
Definition: nmv-i-debugger.h:209
nmv-safe-ptr-utils.h
nemiver::IDebugger::RUNNING
@ RUNNING
Definition: nmv-i-debugger.h:1037
nemiver::IDebugger::Variable::visualizer
const UString & visualizer() const
Definition: nmv-i-debugger.h:747
nemiver::IDebugger::Variable::format
void format(Format a_format)
Definition: nmv-i-debugger.h:1015
nemiver::IDebugger::Variable::needs_revisualizing
void needs_revisualizing(bool a)
Definition: nmv-i-debugger.h:1018
nemiver::IDebugger::READ_WATCHPOINT_TRIGGER
@ READ_WATCHPOINT_TRIGGER
Definition: nmv-i-debugger.h:1069
nemiver::IDebugger::Variable::name_caption
const UString & name_caption() const
Definition: nmv-i-debugger.h:737
nemiver::IDebugger::DisassSlot
sigc::slot< void, const DisassembleInfo &, const std::list< Asm > & > DisassSlot
Definition: nmv-i-debugger.h:1599
nemiver::IDebugger::Breakpoint::has_condition
bool has_condition() const
Definition: nmv-i-debugger.h:224
nemiver::IDebugger::Breakpoint::id
string id() const
Definition: nmv-i-debugger.h:148
nemiver::IDebugger::Breakpoint::nb_times_hit
void nb_times_hit(int a_nb)
Definition: nmv-i-debugger.h:227
nemiver::IDebugger::Breakpoint::id
void id(string &s) const
Definition: nmv-i-debugger.h:179
nemiver::common::Object
Definition: nmv-object.h:43
nemiver::common::DisassembleInfo
Definition: nmv-asm-instr.h:201
nmv-address.h
nemiver::IDebugger::Variable::path_expression
const UString & path_expression() const
Definition: nmv-i-debugger.h:1002
nemiver::IDebugger::Variable::debugger
void debugger(IDebugger *a_dbg)
Definition: nmv-i-debugger.h:728
nemiver::IDebugger::Breakpoint::nb_times_hit
int nb_times_hit() const
Definition: nmv-i-debugger.h:226
nemiver::IDebugger::Breakpoint::enabled
void enabled(bool a_in)
Definition: nmv-i-debugger.h:195
nemiver::IDebugger::Frame::args
const map< string, string > & args() const
Definition: nmv-i-debugger.h:420
nemiver::IDebugger::Variable::type
void type(const UString &a_type)
Definition: nmv-i-debugger.h:744
nemiver::IDebugger::State
State
Definition: nmv-i-debugger.h:1028
nemiver
Definition: nmv-address.h:31
nemiver::IDebugger::state_to_string
static UString state_to_string(State a_state)
Definition: nmv-i-debugger.h:1042
nemiver::IDebugger::OverloadsChoiceEntry::index
void index(int a_index)
Definition: nmv-i-debugger.h:354
nemiver::IDebugger::LocSlot
sigc::slot< void, Loc & > LocSlot
Definition: nmv-i-debugger.h:1095
nemiver::common::ObjectRef
Definition: nmv-safe-ptr-utils.h:45
nemiver::IDebugger::Breakpoint::is_pending
bool is_pending() const
Definition: nmv-i-debugger.h:246
nemiver::IDebugger::OverloadsChoiceEntry::line_number
int line_number() const
Definition: nmv-i-debugger.h:362
nemiver::IDebugger::INFERIOR_LOADED
@ INFERIOR_LOADED
Definition: nmv-i-debugger.h:1032
nemiver::IDebugger::Variable::name
void name(const UString &a_name)
Definition: nmv-i-debugger.h:731
nemiver::IDebugger::Variable::get_dereferenced
VariableSafePtr get_dereferenced()
Definition: nmv-i-debugger.h:885
nemiver::IDebugger::Frame::args
map< string, string > & args()
Definition: nmv-i-debugger.h:421
nemiver::IDebugger::Frame::clear
void clear()
clears the current instance
Definition: nmv-i-debugger.h:441
nmv-asm-instr.h
nemiver::IDebugger::OverloadsChoiceEntry::line_number
void line_number(int a_in)
Definition: nmv-i-debugger.h:363
nemiver::IDebugger::Breakpoint::condition
const string & condition() const
Definition: nmv-i-debugger.h:221
THROW
#define THROW(a_reason)
Definition: nmv-exception.h:99
nmv-ustring.h
nemiver::IDebugger::ConstVariableListSlot
sigc::slot< void, const VariableList & > ConstVariableListSlot
Definition: nmv-i-debugger.h:462
NEMIVER_API
#define NEMIVER_API
Definition: nmv-api-macros.h:53
nemiver::IDebugger::Breakpoint::STANDARD_BREAKPOINT_TYPE
@ STANDARD_BREAKPOINT_TYPE
Definition: nmv-i-debugger.h:95
nemiver::IDebugger::Breakpoint::parent_breakpoint_number
int parent_breakpoint_number() const
Definition: nmv-i-debugger.h:268
nemiver::IDebugger::Variable::to_string
void to_string(UString &a_str, bool a_show_var_name=false, const UString &a_indent_str="") const
Definition: nmv-i-debugger.h:809
nemiver::IDebugger::Variable::value
const UString & value() const
Definition: nmv-i-debugger.h:740
nemiver::IDebugger::Variable::members
const VariableList & members() const
Definition: nmv-i-debugger.h:609
nmv-api-macros.h
nemiver::IDebugger::Variable::needs_unfolding
bool needs_unfolding() const
Definition: nmv-i-debugger.h:972
nemiver::common::Asm
Definition: nmv-asm-instr.h:127
nemiver::IDebugger::Breakpoint::initial_ignore_count
void initial_ignore_count(int a)
Definition: nmv-i-debugger.h:232
nemiver::IDebugger::Variable::display_hint
void display_hint(const UString &a)
Definition: nmv-i-debugger.h:751
nemiver::IDebugger::Variable::visualizer
void visualizer(const UString &a)
Definition: nmv-i-debugger.h:748
nemiver::IDebugger::Variable::BINARY_FORMAT
@ BINARY_FORMAT
Definition: nmv-i-debugger.h:469
nemiver::IDebugger::ACCESS_WATCHPOINT_TRIGGER
@ ACCESS_WATCHPOINT_TRIGGER
Definition: nmv-i-debugger.h:1070
nemiver::common::DynamicModule
The base class for loadable modules.
Definition: nmv-dynamic-module.h:76
nemiver::IDebugger::Breakpoint::append_sub_breakpoint
void append_sub_breakpoint(Breakpoint &b)
Definition: nmv-i-debugger.h:257
nemiver::IDebugger::BREAKPOINT_HIT
@ BREAKPOINT_HIT
Definition: nmv-i-debugger.h:1067
nemiver::IDebugger::Frame::file_name
void file_name(const UString &a_in)
Definition: nmv-i-debugger.h:427
nemiver::IDebugger::WATCHPOINT_TRIGGER
@ WATCHPOINT_TRIGGER
Definition: nmv-i-debugger.h:1068
nemiver::IDebugger::Variable::sibling_index
int sibling_index() const
Definition: nmv-i-debugger.h:639
nemiver::IDebugger::Breakpoint::address
const Address & address() const
Definition: nmv-i-debugger.h:197
nemiver::IDebugger::Variable::copy
bool copy(const Variable &a_other)
Definition: nmv-i-debugger.h:920
nemiver::IDebugger::Variable::id
const UString & id() const
Definition: nmv-i-debugger.h:721
nemiver::IDebugger::DefaultSlot
sigc::slot< void > DefaultSlot
Definition: nmv-i-debugger.h:455
nemiver::IDebugger::FrameArgsSlot
sigc::slot< void, const map< int, IDebugger::VariableList > & > FrameArgsSlot
Definition: nmv-i-debugger.h:459
nemiver::IDebugger::Frame::file_name
const UString & file_name() const
Definition: nmv-i-debugger.h:426
nemiver::common::UString
Definition: nmv-ustring.h:45
nemiver::IDebugger::Breakpoint::address
Address & address()
Definition: nmv-i-debugger.h:198
nemiver::IDebugger::Variable::path_expression
void path_expression(const UString &a_expr)
Definition: nmv-i-debugger.h:1006
nemiver::IDebugger::Variable::root
const VariableSafePtr root() const
Definition: nmv-i-debugger.h:801
nemiver::IDebugger::Variable::type
void type(const string &a_type)
Definition: nmv-i-debugger.h:745
nemiver::IDebugger::Frame::line
void line(int a_in)
Definition: nmv-i-debugger.h:433
nemiver::IDebugger::Variable::set
void set(const Variable &a_other)
Definition: nmv-i-debugger.h:937
nemiver::IDebugger::Variable::is_dereferenced
bool is_dereferenced()
Definition: nmv-i-debugger.h:890
nemiver::IDebugger::Variable::expects_children
bool expects_children() const
Definition: nmv-i-debugger.h:964
nemiver::IDebugger::Variable::DECIMAL_FORMAT
@ DECIMAL_FORMAT
Definition: nmv-i-debugger.h:470
nemiver::IDebugger::Breakpoint::Type
Type
Definition: nmv-i-debugger.h:93
nemiver::IDebugger::Variable::parent
const VariableSafePtr parent() const
A getter of the parent Variable of the current instance.
Definition: nmv-i-debugger.h:783
nemiver::IDebugger::Breakpoint::condition
void condition(const string &a_cond)
Definition: nmv-i-debugger.h:222
nemiver::IDebugger::Variable::Format
Format
Definition: nmv-i-debugger.h:467
nemiver::IDebugger::Frame::Frame
Frame()
Definition: nmv-i-debugger.h:386
nemiver::IDebugger::Variable::name
const UString & name() const
Definition: nmv-i-debugger.h:730
nemiver::IDebugger::BreakpointsSlot
sigc::slot< void, const std::map< string, IDebugger::Breakpoint > & > BreakpointsSlot
Definition: nmv-i-debugger.h:1093
nemiver::common::DynModIface
Definition: nmv-dynamic-module.h:220
nemiver::IDebugger::OverloadsChoiceEntry::function_name
void function_name(const UString &a_in)
Definition: nmv-i-debugger.h:357
nemiver::IDebugger::EXITED_SIGNALLED
@ EXITED_SIGNALLED
Definition: nmv-i-debugger.h:1075
nemiver::IDebugger::Variable::display_hint
const UString & display_hint() const
Definition: nmv-i-debugger.h:750
nemiver::IDebugger::Variable::needs_revisualizing
bool needs_revisualizing() const
Definition: nmv-i-debugger.h:1017
nemiver::IDebugger::OverloadsChoiceEntry::index
int index() const
Definition: nmv-i-debugger.h:353
nemiver::IDebugger::END_STEPPING_RANGE
@ END_STEPPING_RANGE
Definition: nmv-i-debugger.h:1074
nemiver::IDebugger::Breakpoint::type
Type type() const
Definition: nmv-i-debugger.h:272
nemiver::IDebugger::is_attached_to_target
virtual bool is_attached_to_target() const =0
nemiver::IDebugger::Frame::library
void library(const string &a_library)
Definition: nmv-i-debugger.h:436
nemiver::IDebugger::Variable::parent
void parent(Variable *a_parent)
Definition: nmv-i-debugger.h:795
nemiver::IDebugger::Variable::debugger
IDebugger * debugger() const
Definition: nmv-i-debugger.h:727
nemiver::IDebugger::Breakpoint::number
int number() const
Definition: nmv-i-debugger.h:189
nemiver::IDebugger::IDebugger
IDebugger(DynamicModule *a_dynmod)
Definition: nmv-i-debugger.h:81
nemiver::IDebugger::Breakpoint::is_pending
void is_pending(bool a)
Definition: nmv-i-debugger.h:247
nemiver::IDebugger::Variable::build_qname
void build_qname(UString &a_qname) const
Definition: nmv-i-debugger.h:843
nemiver::IDebugger::Variable::Variable
Variable(IDebugger *a_dbg=0)
Definition: nmv-i-debugger.h:583
nemiver::IDebugger::Variable::HEXADECIMAL_FORMAT
@ HEXADECIMAL_FORMAT
Definition: nmv-i-debugger.h:471
nemiver::common::Address::to_string
const std::string & to_string() const
nemiver::IDebugger::Frame::address
const Address & address() const
Definition: nmv-i-debugger.h:409
nemiver::IDebugger::Variable::Variable
Variable(const UString &a_name, const UString &a_value, const UString &a_type, bool a_in_scope=true, IDebugger *a_dbg=0)
Definition: nmv-i-debugger.h:548
nemiver::IDebugger::Frame::file_full_name
void file_full_name(const UString &a_in)
Definition: nmv-i-debugger.h:430
nemiver::IDebugger::Breakpoint::clear
void clear()
clear this instance of breakpoint
Definition: nmv-i-debugger.h:278
nemiver::IDebugger::Breakpoint::file_full_name
void file_full_name(const UString &a_in)
Definition: nmv-i-debugger.h:216
nemiver::IDebugger::register_id_t
unsigned int register_id_t
Definition: nmv-i-debugger.h:87
nemiver::IDebugger::Frame::function_name
void function_name(const string &a_in)
Definition: nmv-i-debugger.h:418
nemiver::IDebugger::is_exited
static bool is_exited(enum StopReason a_reason)
Return true if a StopReason represents a reason for exiting.
Definition: nmv-i-debugger.h:1082
nemiver::common::SafePtr::reset
void reset()
Definition: nmv-safe-ptr.h:178
nemiver::IDebugger::Variable::internal_name
const UString & internal_name() const
Definition: nmv-i-debugger.h:711
nemiver::IDebugger::Variable::internal_name
void internal_name(const UString &a_in)
Definition: nmv-i-debugger.h:716
nemiver::IDebugger::Variable::value
void value(const UString &a_value)
Definition: nmv-i-debugger.h:741
nemiver::IDebugger::WATCHPOINT_SCOPE
@ WATCHPOINT_SCOPE
Definition: nmv-i-debugger.h:1073
nemiver::IDebugger::Breakpoint::address
void address(const string &a_in)
Definition: nmv-i-debugger.h:199
nemiver::IDebugger::Variable::in_scope
void in_scope(bool a)
Definition: nmv-i-debugger.h:1012
nmv-dynamic-module.h
nemiver::IDebugger::Breakpoint::Breakpoint
Breakpoint()
Definition: nmv-i-debugger.h:136
nemiver::IDebugger::Variable::num_expected_children
void num_expected_children(unsigned int a_in)
Definition: nmv-i-debugger.h:959
nemiver::IDebugger::OverloadsChoiceEntries
vector< OverloadsChoiceEntry > OverloadsChoiceEntries
Definition: nmv-i-debugger.h:365
nemiver::IDebugger::LOCATION_REACHED
@ LOCATION_REACHED
Definition: nmv-i-debugger.h:1072
nemiver::IDebugger::Breakpoint::ignore_count
void ignore_count(int a)
Definition: nmv-i-debugger.h:238
nemiver::IDebugger::Breakpoint::type
void type(Type a_type)
Definition: nmv-i-debugger.h:273
nemiver::ILangTrait
Definition: nmv-i-lang-trait.h:44
nemiver::IDebugger::Breakpoint::sub_breakpoint_number
int sub_breakpoint_number() const
Definition: nmv-i-debugger.h:192
nemiver::IDebugger::OverloadsChoiceEntry::kind
void kind(Kind a_kind)
Definition: nmv-i-debugger.h:351
nemiver::IDebugger::Variable::~Variable
~Variable()
Definition: nmv-i-debugger.h:595
nemiver::IDebugger::Variable::is_morally_root
bool is_morally_root() const
Definition: nmv-i-debugger.h:773
nemiver::IDebugger::Breakpoint::is_write_watchpoint
bool is_write_watchpoint() const
Definition: nmv-i-debugger.h:243
nemiver::IDebugger::Breakpoint::enabled
bool enabled() const
Definition: nmv-i-debugger.h:194
nemiver::IDebugger::VariableList
list< VariableSafePtr > VariableList
Definition: nmv-i-debugger.h:369
nemiver::IDebugger::Frame::library
const string & library() const
Definition: nmv-i-debugger.h:435
nemiver::IDebugger::Breakpoint::WATCHPOINT_TYPE
@ WATCHPOINT_TYPE
Definition: nmv-i-debugger.h:96
nemiver::IDebugger::delete_variable
virtual void delete_variable(const VariableSafePtr a_var, const UString &a_cookie="")=0
nemiver::common::AsmInstr
Definition: nmv-asm-instr.h:42
nemiver::IDebugger::Variable::is_copyable
bool is_copyable(const Variable &a_other) const
Definition: nmv-i-debugger.h:896
nemiver::IDebugger::OverloadsChoiceEntry::file_name
const UString & file_name() const
Definition: nmv-i-debugger.h:359
nemiver::IDebugger::Variable
Definition: nmv-i-debugger.h:465
nemiver::IDebugger::Breakpoint::initial_ignore_count
int initial_ignore_count() const
Definition: nmv-i-debugger.h:231
nemiver::IDebugger::Breakpoint::line
void line(int a_in)
Definition: nmv-i-debugger.h:219
nemiver::IDebugger::Breakpoint::has_multiple_locations
bool has_multiple_locations() const
Definition: nmv-i-debugger.h:255
nemiver::str_utils::int_to_string
std::string int_to_string(size_t an_int)
nmv-loc.h
nmv-i-conf-mgr.h
nemiver::IDebugger::Breakpoint::is_sub_breakpoint
bool is_sub_breakpoint() const
Definition: nmv-i-debugger.h:270
nemiver::IDebugger::StopReason
StopReason
Definition: nmv-i-debugger.h:1065
nemiver::IDebugger::Breakpoint::is_read_watchpoint
void is_read_watchpoint(bool f)
Definition: nmv-i-debugger.h:241
nemiver::IDebugger::Breakpoint::sub_breakpoints
const vector< Breakpoint > & sub_breakpoints() const
Definition: nmv-i-debugger.h:263
nemiver::IDebugger::Frame::address
void address(const Address &a_in)
Definition: nmv-i-debugger.h:411
nemiver::IDebugger::Variable::format
Format format() const
Definition: nmv-i-debugger.h:1014
nemiver::IDebugger::ConstUStringSlot
sigc::slot< void, const UString & > ConstUStringSlot
Definition: nmv-i-debugger.h:463
nemiver::IDebugger::Variable::Variable
Variable(const UString &a_name, IDebugger *a_dbg=0)
Definition: nmv-i-debugger.h:568
nemiver::IDebugger::Breakpoint::file_full_name
const UString & file_full_name() const
Definition: nmv-i-debugger.h:215
nemiver::IDebugger::Frame::function_name
const string & function_name() const
Definition: nmv-i-debugger.h:417
nemiver::IDebugger::Breakpoint::ignore_count
int ignore_count() const
Definition: nmv-i-debugger.h:237
nemiver::IDebugger::Variable::is_dynamic
bool is_dynamic() const
Definition: nmv-i-debugger.h:1020
nemiver::IDebugger::Variable::set_dereferenced
void set_dereferenced(VariableSafePtr a_derefed)
Definition: nmv-i-debugger.h:880
nemiver::IDebugger
a debugger engine.
Definition: nmv-i-debugger.h:74
nemiver::common::Loc
The base type presenting a location.
Definition: nmv-loc.h:42
nemiver::IDebugger::Variable::build_qualified_internal_name
void build_qualified_internal_name(UString &a_qname) const
Definition: nmv-i-debugger.h:865
nemiver::IDebugger::OverloadsChoiceEntry::ALL
@ ALL
Definition: nmv-i-debugger.h:311
nemiver::IDebugger::Breakpoint::is_write_watchpoint
void is_write_watchpoint(bool f)
Definition: nmv-i-debugger.h:244
nemiver::IDebugger::OverloadsChoiceEntry::function_name
const UString & function_name() const
Definition: nmv-i-debugger.h:356
nemiver::IDebugger::Breakpoint::expression
void expression(const string &a_expr)
Definition: nmv-i-debugger.h:210
nemiver::IDebugger::EXITED
@ EXITED
Definition: nmv-i-debugger.h:1076
nemiver::common::Address
Definition: nmv-address.h:34
nemiver::IDebugger::Frame
a function frame as seen by the debugger.
Definition: nmv-i-debugger.h:372
nemiver::IDebugger::Breakpoint::is_read_watchpoint
bool is_read_watchpoint() const
Definition: nmv-i-debugger.h:240
nemiver::common::Address::clear
void clear()
nemiver::common::UString::chomp
void chomp()
nemiver::IDebugger::OverloadsChoiceEntry::OverloadsChoiceEntry
OverloadsChoiceEntry(Kind a_kind, int a_index, UString &a_function_name, UString a_file_name, int a_line_number)
Definition: nmv-i-debugger.h:335
nemiver::common::ObjectUnref
Definition: nmv-safe-ptr-utils.h:55
nemiver::IDebugger::Variable::name_caption
void name_caption(const UString &a_n)
Definition: nmv-i-debugger.h:738
nemiver::IDebuggerSafePtr
SafePtr< IDebugger, ObjectRef, ObjectUnref > IDebuggerSafePtr
Definition: nmv-i-debugger.h:66
nemiver::IDebugger::Breakpoint
a breakpoint descriptor
Definition: nmv-i-debugger.h:90
nemiver::IDebugger::Variable::has_parent
bool has_parent() const
Definition: nmv-i-debugger.h:755
nemiver::IDebugger::Breakpoint::parent_id
string parent_id() const
Definition: nmv-i-debugger.h:163
nemiver::IDebugger::Variable::Variable
Variable(const UString &a_internal_name, const UString &a_name, const UString &a_value, const UString &a_type, bool a_in_scope=true, IDebugger *a_dbg=0)
Definition: nmv-i-debugger.h:527
nemiver::IDebugger::Frame::line
int line() const
Definition: nmv-i-debugger.h:432
nemiver::IDebugger::Variable::type
const UString & type() const
Definition: nmv-i-debugger.h:743
nemiver::IDebugger::Variable::has_more_children
bool has_more_children() const
Definition: nmv-i-debugger.h:1023
nemiver::IDebugger::EXITED_NORMALLY
@ EXITED_NORMALLY
Definition: nmv-i-debugger.h:1077
nemiver::IDebugger::Variable::in_scope
bool in_scope() const
Definition: nmv-i-debugger.h:1011
nemiver::IDebugger::Variable::members
VariableList & members()
Definition: nmv-i-debugger.h:611
nemiver::IDebugger::FrameVectorSlot
sigc::slot< void, const vector< IDebugger::Frame > & > FrameVectorSlot
Definition: nmv-i-debugger.h:457
nemiver::IDebugger::Breakpoint::line
int line() const
Definition: nmv-i-debugger.h:218
nemiver::IDebugger::Breakpoint::file_name
void file_name(const UString &a_in)
Definition: nmv-i-debugger.h:213
nemiver::IDebugger::Frame::has_empty_address
bool has_empty_address() const
Definition: nmv-i-debugger.h:412
nemiver::IDebugger::Frame::file_full_name
const UString & file_full_name() const
Definition: nmv-i-debugger.h:429
nemiver::IDebugger::ConstVariableSlot
sigc::slot< void, const VariableSafePtr > ConstVariableSlot
Definition: nmv-i-debugger.h:461
nemiver::IDebugger::VariableSafePtr
SafePtr< Variable, ObjectRef, ObjectUnref > VariableSafePtr
Definition: nmv-i-debugger.h:367
nemiver::IDebugger::OverloadsChoiceEntry::OverloadsChoiceEntry
OverloadsChoiceEntry()
Definition: nmv-i-debugger.h:345
nemiver::IDebugger::OverloadsChoiceEntry
an entry of a choice list to choose between a list of overloaded functions. This is used for instance...
Definition: nmv-i-debugger.h:307
nemiver::IDebugger::OverloadsChoiceEntry::Kind
Kind
Definition: nmv-i-debugger.h:309
nemiver::IDebugger::Variable::NATURAL_FORMAT
@ NATURAL_FORMAT
Definition: nmv-i-debugger.h:473
nemiver::IDebugger::Breakpoint::file_name
const UString & file_name() const
Definition: nmv-i-debugger.h:212
nemiver::common::SafePtr
Definition: nmv-safe-ptr.h:71
nemiver::IDebugger::OverloadsChoiceEntry::file_name
void file_name(const UString &a_in)
Definition: nmv-i-debugger.h:360
nemiver::IDebugger::Variable::equals
bool equals(const Variable &a_other) const
Definition: nmv-i-debugger.h:663
nemiver::common::DynamicModuleSafePtr
SafePtr< DynamicModule, ObjectRef, ObjectUnref > DynamicModuleSafePtr
Definition: nmv-dynamic-module.h:61
nemiver::IDebugger::~IDebugger
virtual ~IDebugger()
Definition: nmv-i-debugger.h:1097
nmv-str-utils.h
nemiver::IDebugger::Variable::equals_by_value
bool equals_by_value(const Variable &a_other) const
Definition: nmv-i-debugger.h:677
nemiver::IDebugger::Variable::is_dynamic
void is_dynamic(bool a)
Definition: nmv-i-debugger.h:1021
nemiver::IDebugger::Variable::get_member_at
bool get_member_at(int a_index, VariableSafePtr &a_var) const
Definition: nmv-i-debugger.h:622
nemiver::IDebugger::Variable::OCTAL_FORMAT
@ OCTAL_FORMAT
Definition: nmv-i-debugger.h:472
nemiver::IDebugger::Frame::level
int level() const
Definition: nmv-i-debugger.h:423
nemiver::IDebugger::READY
@ READY
Definition: nmv-i-debugger.h:1035
nemiver::IDebugger::FUNCTION_FINISHED
@ FUNCTION_FINISHED
Definition: nmv-i-debugger.h:1071
nemiver::IDebugger::Variable::append
void append(const VariableSafePtr &a_var)
Definition: nmv-i-debugger.h:698
nemiver::IDebugger::Variable::num_expected_children
unsigned int num_expected_children() const
Definition: nmv-i-debugger.h:954
nemiver::IDebugger::Breakpoint::number
void number(int a_in)
Definition: nmv-i-debugger.h:191
nemiver::IDebugger::Frame::address
Address & address()
Definition: nmv-i-debugger.h:410
nemiver::common::env::do_init
void do_init()
nemiver::common::Address::empty
bool empty() const
nemiver::IDebugger::Variable::has_more_children
void has_more_children(bool a)
Definition: nmv-i-debugger.h:1024
nemiver::IDebugger::OverloadsChoiceEntry::kind
Kind kind() const
Definition: nmv-i-debugger.h:350
nemiver::common::MixedAsmInstr
Definition: nmv-asm-instr.h:81
nemiver::IDebugger::Frame::level
void level(int a_level)
Definition: nmv-i-debugger.h:424