author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 07 Feb 2019 15:18:41 +0000 | |
changeset 175 | a04e1a36e888 |
parent 127 | 1254cc005f57 |
permissions | -rw-r--r-- |
127
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
import gdb |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
from itertools import chain |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
from gdb.FrameDecorator import FrameDecorator, SymValueWrapper |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
class FrameDecoratorWithSyntheticArgs(FrameDecorator): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
def __init__(self, fobj): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
super(FrameDecoratorWithSyntheticArgs, self).__init__(fobj) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
self.fobj = fobj |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
def frame_args (self): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
r_args = super(FrameDecoratorWithSyntheticArgs, self).frame_args() |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
s_args = [ |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
SymValueWrapper("syntheticArg0",gdb.Value(12)), |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
SymValueWrapper("syntheticArg1","Stuff"), |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
SymValueWrapper("syntheticArg2",42) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
] |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
return chain(s_args, r_args) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
def frame_locals (self): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
r_locals = super(FrameDecoratorWithSyntheticArgs, self).frame_locals() |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
s_locals = [ |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
SymValueWrapper("syntheticLocal0",gdb.Value(12)), |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
SymValueWrapper("syntheticLocal1","Stuff"), |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
SymValueWrapper("syntheticLocal2",42) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
] |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
return chain(s_locals, r_locals) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
class FrameFilterWithSyntheticArgs (): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
def __init__ (self): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
self.name = "SyntaticArgs" |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
self.priority = 100 |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
self.enabled = True |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
gdb.frame_filters [self.name] = self |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
def filter(self, frames): |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
return map(lambda f : FrameDecoratorWithSyntheticArgs(f), frames) |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
FrameFilterWithSyntheticArgs() |
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
|
1254cc005f57
Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |