rizin/libr/debug/t/main.c
2015-12-04 02:57:56 +01:00

76 lines
1.6 KiB
C

/* radare - LGPL - Copyright 2009-2010 pancake<nopcode.org> */
#include <r_util.h>
#include <r_debug.h>
#include <r_io.h>
int main(int argc, char **argv) {
int ret, i;
RIODesc *fd;
int tid, pid;
struct r_io_t *io;
struct r_debug_t *dbg = NULL;
io = r_io_new ();
printf ("Supported IO pluggins:\n");
r_io_plugin_list (io);
fd = r_io_open_nomap (io, "dbg:///bin/ls", 0, 0);
if (!fd) {
printf("Cannot open dbg:///bin/ls\n");
goto beach;
}
// r_io_set_fd(io, ret);
printf ("r_io_open_nomap dbg:///bin/ls' = %d\n", io->fd->fd);
{
/* dump process memory */
ut8 buf[128];
#if __arm__
int ret = r_io_read_at(io, 0x8000, buf, 128);
#else
int ret = r_io_read_at(io, 0x8048000, buf, 128);
#endif
if (ret != 128)
eprintf ("OOps cannot read 128 bytes\n");
else
for (i=0;i<128;i++) {
printf ("%02x ", buf[i]);
if (!((i+1)%16)) printf ("\n");
}
}
dbg = r_debug_new (true);
printf("Supported debugger backends:\n");
ret = r_debug_use (dbg, "native");
printf ("Using native debugger = %s\n", r_str_bool(ret));
tid = pid = r_io_system (io, "pid");
eprintf (" My pid is : %d\n", pid);
r_debug_select (dbg, pid, tid);
//printf("--> regs pre step\n");
//r_io_system(io, "reg");
r_debug_reg_sync (dbg, R_REG_TYPE_GPR, 0);
r_debug_reg_list (dbg, R_REG_TYPE_GPR, 32, NULL);
printf ("--> perform 2 steps (only 1 probably?)\n");
r_debug_step (dbg, 2);
r_debug_reg_sync(dbg, R_REG_TYPE_GPR, 0);
r_debug_reg_list(dbg, R_REG_TYPE_GPR, 32, NULL);
//printf("--> regs post step\n");
//r_io_system(io, "reg");
printf("---\n");
r_debug_continue (dbg);
printf("---\n");
beach:
r_io_free (io);
r_debug_free (dbg);
return 0;
}