diff options
| author | Caroline Leman <CarolineLe@users.noreply.github.com> | 2020-05-25 13:26:39 +0200 |
|---|---|---|
| committer | Caroline Leman <CarolineLe@users.noreply.github.com> | 2020-05-25 13:26:39 +0200 |
| commit | ea148341e96de0b29d030c41f7b2cdffb39a2c6b (patch) | |
| tree | b7d5d27667e519f3be2c839c2e120940dc97ba32 | |
| parent | 43bdc4c510b02d7f4e96d1213331c52cf925d714 (diff) | |
| download | miasm-ea148341e96de0b29d030c41f7b2cdffb39a2c6b.tar.gz miasm-ea148341e96de0b29d030c41f7b2cdffb39a2c6b.zip | |
Jitter: add a trace option to 'run'
| -rw-r--r-- | miasm/jitter/jitload.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/miasm/jitter/jitload.py b/miasm/jitter/jitload.py index 34690425..85d5636f 100644 --- a/miasm/jitter/jitload.py +++ b/miasm/jitter/jitload.py @@ -393,13 +393,16 @@ class Jitter(object): self.pc = pc self.run = True - def continue_run(self, step=False): + def continue_run(self, step=False, trace=False): """PRE: init_run. Continue the run of the current session until iterator returns or run is set to False. If step is True, run only one time. + If trace is True, activate trace log option until execution stops Return the iterator value""" + if trace: + self.set_trace_log() while self.run: try: return next(self.run_iterator) @@ -409,8 +412,9 @@ class Jitter(object): self.run_iterator = self.runiter_once(self.pc) if step is True: - return None - + break + if trace: + self.set_trace_log(False, False, False) return None @@ -422,17 +426,18 @@ class Jitter(object): self.init_run(addr) return self.continue_run() - def run_until(self, addr): + def run_until(self, addr, trace=False): """PRE: init_run. Continue the run of the current session until iterator returns, run is set to False or addr is reached. + If trace is True, activate trace log option until execution stops Return the iterator value""" def stop_exec(jitter): jitter.remove_breakpoints_by_callback(stop_exec) return False self.add_breakpoint(addr, stop_exec) - return self.continue_run() + return self.continue_run(trace=trace) def init_stack(self): self.vm.add_memory_page( |