Skip to content

Commit 6874008

Browse files
[lldb comparator] ability to execute commands separately (#34)
lets user execute command separately for base or regressed and updates values accordingly
1 parent 9952c1c commit 6874008

File tree

1 file changed

+85
-29
lines changed

1 file changed

+85
-29
lines changed

debuggers/lldb/lldb_driver.py

Lines changed: 85 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,19 @@ def run_single_command(self, command, version):
8181

8282
return ""
8383

84-
def get_state(self):
84+
def get_state(self, version=None):
8585
result = {}
8686
base_state = {}
8787
regression_state = {}
8888

89-
result['stack_frames'] = self.get_current_stack_frames()
90-
result['locals'] = self.get_current_local_vars(None)
91-
result['args'] = self.get_current_args()
92-
result['instructions'] = self.get_current_instructions()
93-
result['registers'] = self.get_current_registers()
89+
result['stack_frames'] = self.get_current_stack_frames(version)
90+
result['locals'] = self.get_current_local_vars(None, version)
91+
result['args'] = self.get_current_args(version)
92+
result['instructions'] = self.get_current_instructions(version)
93+
result['registers'] = self.get_current_registers(version)
94+
95+
if version is not None:
96+
return result
9497

9598
base_state['stack_frames'] = result['stack_frames']['base']
9699
regression_state['stack_frames'] = result['stack_frames']['regressed']
@@ -109,62 +112,115 @@ def get_state(self):
109112

110113
return { "base" : base_state, "regressed" : regression_state }
111114

112-
def get_current_stack_frames(self):
115+
def get_current_stack_frames(self, version=None):
116+
if version == "base":
117+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
118+
base_stack_frame = get_current_stack_frame_from_target(base_target)
119+
return base_stack_frame
120+
121+
if version == "regressed":
122+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
123+
regression_stack_frame = get_current_stack_frame_from_target(regression_target)
124+
return regression_stack_frame
125+
113126
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
114-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
115-
116127
base_stack_frame = get_current_stack_frame_from_target(base_target)
128+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
117129
regression_stack_frame = get_current_stack_frame_from_target(regression_target)
118130

119131
return { "base" : base_stack_frame, "regressed" : regression_stack_frame }
120132

121-
def get_current_args(self):
122-
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
123-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
133+
def get_current_args(self, version=None):
134+
if version == "base":
135+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
136+
base_args = get_args_as_list(base_target)
137+
return base_args
138+
139+
if version == "regressed":
140+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
141+
regression_args = get_args_as_list(regression_target)
142+
return regression_args
124143

144+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
125145
base_args = get_args_as_list(base_target)
146+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
126147
regression_args = get_args_as_list(regression_target)
127-
128148
return { "base" : base_args, "regressed" : regression_args }
129149

130-
def get_current_local_vars(self, filters):
131-
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
132-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
150+
def get_current_local_vars(self, filters, version=None):
151+
if version == "base":
152+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
153+
base_locals = get_local_vars_as_list(base_target)
154+
if filters == 'ignore-order-declaration':
155+
base_locals.sort()
156+
return base_locals
157+
158+
if version == "regressed":
159+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
160+
regression_locals = get_local_vars_as_list(regression_target)
161+
if filters == 'ignore-order-declaration':
162+
regression_locals.sort()
163+
return regression_locals
133164

165+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
134166
base_locals = get_local_vars_as_list(base_target)
167+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
135168
regression_locals = get_local_vars_as_list(regression_target)
136-
137169
if filters == 'ignore-order-declaration':
138170
base_locals.sort()
139171
regression_locals.sort()
140172

141173
return { "base" : base_locals, "regressed" : regression_locals }
142174

143-
def get_current_instructions(self):
144-
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
145-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
175+
def get_current_instructions(self, version=None):
176+
if version == "base":
177+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
178+
base_args = get_instructions_as_list(base_target)
179+
return base_args
180+
181+
if version == "regressed":
182+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
183+
regression_args = get_instructions_as_list(regression_target)
184+
return regression_args
146185

186+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
147187
base_args = get_instructions_as_list(base_target)
188+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
148189
regression_args = get_instructions_as_list(regression_target)
149-
150190
return { "base" : base_args, "regressed" : regression_args }
151191

152-
def get_current_registers(self):
153-
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
154-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
192+
def get_current_registers(self, version=None):
193+
if version == "base":
194+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
195+
base_args = get_registers_as_list(base_target)
196+
return base_args
197+
198+
if version == "regressed":
199+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
200+
regression_args = get_registers_as_list(regression_target)
201+
return regression_args
155202

203+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
156204
base_args = get_registers_as_list(base_target)
205+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
157206
regression_args = get_registers_as_list(regression_target)
158-
159207
return { "base" : base_args, "regressed" : regression_args }
160208

161-
def get_current_calls(self):
162-
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
163-
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
209+
def get_current_calls(self, version=None):
210+
if version == "base":
211+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
212+
base_calls = get_call_instructions(base_target)
213+
return base_calls
214+
215+
if version == "regressed":
216+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
217+
regression_calls = get_call_instructions(regression_target)
218+
return regression_calls
164219

220+
base_target = self.base_lldb_instance.GetTargetAtIndex(0)
165221
base_calls = get_call_instructions(base_target)
222+
regression_target = self.regression_lldb_instance.GetTargetAtIndex(0)
166223
regression_calls = get_call_instructions(regression_target)
167-
168224
return { "base" : base_calls, "regressed" : regression_calls }
169225

170226
def terminate(self):

0 commit comments

Comments
 (0)