Debugging

This commit is contained in:
Pierre Pronchery 2012-11-04 04:22:55 +01:00
parent 17a285a2e0
commit 1ea24ab2ac
5 changed files with 15 additions and 6 deletions

View File

@ -21,7 +21,7 @@
#ifdef __FreeBSD__
/* variables */
char const * stracecall[] =
char const * stracecall[SYS_getpid + 1] =
{
NULL,
"exit",

View File

@ -23,7 +23,7 @@
/* types */
typedef long ptrace_data_t; /* XXX really is int */
typedef int ptrace_data_t;
struct user
{
struct reg regs;
@ -33,6 +33,9 @@ struct user
/* constants */
# if defined(__amd64__)
# define orig_eax r_rax
# define orig_ebx r_rbx
# define orig_ecx r_rcx
# define orig_edx r_rdx
# elif defined(__i386__)
# define orig_eax r_eax
# endif

View File

@ -21,7 +21,7 @@
#ifdef __NetBSD__
/* variables */
char const * stracecall[] =
char const * stracecall[SYS_getpid + 1] =
{
"syscall",
"exit",
@ -41,7 +41,7 @@ char const * stracecall[] =
"chmod",
"chown",
"break",
NULL,
"oldgetfsstat",
"oldlseek",
"getpid"
};

View File

@ -36,6 +36,9 @@ struct user
/* constants */
# if defined(__amd64__)
# define orig_rax regs[_REG_RAX]
# define orig_rbx regs[_REG_RBX]
# define orig_rcx regs[_REG_RCX]
# define orig_rdx regs[_REG_RDX]
# elif defined(__i386__)
# define orig_eax r_eax
# endif

View File

@ -119,7 +119,7 @@ static void _handle_trap_before(pid_t pid)
struct user context;
int size = sizeof(stracecall) / sizeof(*stracecall);
ptrace(PT_GETREGS, pid, &context, 0);
ptrace(PT_GETREGS, pid, &context.regs, 0);
#ifdef DEBUG
_strace_regs_print(&context.regs);
#endif
@ -140,7 +140,7 @@ static void _handle_trap_after(pid_t pid)
{
struct user context;
ptrace(PT_GETREGS, pid, &context, 0);
ptrace(PT_GETREGS, pid, &context.regs, 0);
#ifdef DEBUG
_strace_regs_print(&context.regs);
#endif
@ -158,6 +158,9 @@ static void _strace_regs_print(struct reg * regs)
{
#if defined(__amd64__)
fprintf(stderr, "rax: 0x%016lx\n", regs->orig_rax);
fprintf(stderr, "rcx: 0x%016lx\n", regs->orig_rcx);
fprintf(stderr, "rdx: 0x%016lx\n", regs->orig_rdx);
fprintf(stderr, "rbx: 0x%016lx\n", regs->orig_rbx);
#endif
}
#endif