Handle debug tracing information in ESIL steps
This commit is contained in:
parent
d15d4daa25
commit
4d1a555dbc
3 changed files with 12 additions and 6 deletions
|
|
@ -1220,13 +1220,13 @@ static void esil_step(RCore *core, ut64 until_addr, const char *until_expr) {
|
|||
//eprintf ("PC=0x%llx\n", (ut64)addr);
|
||||
}
|
||||
if (core->anal->esil->delay)
|
||||
addr=core->anal->esil->delay_addr;
|
||||
addr = core->anal->esil->delay_addr;
|
||||
r_io_read_at (core->io, addr, code, sizeof (code));
|
||||
r_asm_set_pc (core->assembler, addr);
|
||||
ret = r_anal_op (core->anal, &op, addr, code, sizeof (code));
|
||||
core->anal->esil->delay = op.delay;
|
||||
if (core->anal->esil->delay)
|
||||
core->anal->esil->delay_addr=addr+op.size;
|
||||
core->anal->esil->delay_addr = addr+op.size;
|
||||
#if 0
|
||||
eprintf ("RET %d\n", ret);
|
||||
eprintf ("ADDR 0x%llx\n", addr);
|
||||
|
|
@ -1258,6 +1258,12 @@ sleep (1);
|
|||
op.size = 1; // avoid inverted stepping
|
||||
r_reg_setv (core->anal->reg, name, addr + op.size);
|
||||
}
|
||||
if (core->dbg->trace->enabled) {
|
||||
RReg *reg = core->dbg->reg;
|
||||
core->dbg->reg = core->anal->reg;
|
||||
r_debug_trace_pc (core->dbg);
|
||||
core->dbg->reg = reg;
|
||||
}
|
||||
// check addr
|
||||
if (until_addr != UT64_MAX) {
|
||||
if (addr == until_addr) {
|
||||
|
|
|
|||
|
|
@ -1050,14 +1050,14 @@ static void r_core_cmd_bp(RCore *core, const char *input) {
|
|||
case 'e':
|
||||
for (p=input+3; *p==' ';p++);
|
||||
if (*p == '*') {
|
||||
r_bp_set_trace_all(core->dbg->bp,R_TRUE);
|
||||
r_bp_set_trace_all (core->dbg->bp,R_TRUE);
|
||||
} else if (!r_bp_set_trace (core->dbg->bp, addr, R_TRUE))
|
||||
eprintf ("Cannot set tracepoint\n");
|
||||
break;
|
||||
case 'd':
|
||||
for (p=input+3; *p==' ';p++);
|
||||
if (*p == '*') {
|
||||
r_bp_set_trace_all(core->dbg->bp,R_FALSE);
|
||||
r_bp_set_trace_all (core->dbg->bp,R_FALSE);
|
||||
} else if (!r_bp_set_trace (core->dbg->bp, addr, R_FALSE))
|
||||
eprintf ("Cannot unset tracepoint\n");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* radare - LGPL - Copyright 2009-2014 - pancake, TheLemonMan */
|
||||
/* radare - LGPL - Copyright 2009-2015 - pancake, TheLemonMan */
|
||||
|
||||
#include <r_debug.h>
|
||||
#include <r_anal.h>
|
||||
|
|
@ -54,7 +54,7 @@ static int r_debug_recoil(RDebug *dbg) {
|
|||
}
|
||||
|
||||
R_API RDebug *r_debug_new(int hard) {
|
||||
RDebug *dbg = R_NEW (RDebug);
|
||||
RDebug *dbg = R_NEW0 (RDebug);
|
||||
if (dbg) {
|
||||
// R_SYS_ARCH
|
||||
dbg->arch = r_sys_arch_id (R_SYS_ARCH); // 0 is native by default
|
||||
|
|
|
|||
Loading…
Reference in a new issue