author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 18 Feb 2019 10:49:02 +0000 | |
changeset 176 | e734c17e7c37 |
parent 122 | c939f8a4c3cd |
permissions | -rw-r--r-- |
122
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
import gdb |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
import gdb.types |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
import sys |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
if sys.version_info[0] > 2: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
long = int |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
imap = map |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
class cons_pp(object): |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
def __init__(self, val): |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
self._val = val |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
def to_string(self): |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
if long(self._val) == 0: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
return "nil" |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
else: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
return "(...)" |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
def children(self): |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
if long(self._val) == 0: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
return [] |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
else: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
return [ |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
('car' , self._val["slots"][0]), |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
('cdr' , self._val["slots"][1]) |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
] |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
def cons_pp_lookup(val): |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
if str(val.type) == 'struct _cons *': |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
return cons_pp(val) |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
else: |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
return None |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
del gdb.pretty_printers[1:] |
c939f8a4c3cd
Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
gdb.pretty_printers.append(cons_pp_lookup) |