summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2015-11-06 16:57:23 +0000
committerjhb <jhb@FreeBSD.org>2015-11-06 16:57:23 +0000
commit9b5302b2d60d82c538839a91d86212a234dc43d4 (patch)
tree0d6ed68ce0f2046902a6c701ee13293489446998
parent9e6a191f956147a197eb482d7ef3171efd6f51f5 (diff)
downloadFreeBSD-src-9b5302b2d60d82c538839a91d86212a234dc43d4.zip
FreeBSD-src-9b5302b2d60d82c538839a91d86212a234dc43d4.tar.gz
MFC 288902:
Include additional info in ptrace(2) KTR traces: - The new PC value and signal passed to PT_CONTINUE, PT_DETACH, PT_SYSCALL, and PT_TO_SC[EX]. - The system call code returned via PT_LWPINFO.
-rw-r--r--sys/kern/sys_process.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index 5efec4f..db5f13a 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -938,25 +938,29 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
switch (req) {
case PT_TO_SCE:
p->p_stops |= S_PT_SCE;
- CTR2(KTR_PTRACE,
- "PT_TO_SCE: pid %d, stops = %#x", p->p_pid,
- p->p_stops);
+ CTR4(KTR_PTRACE,
+ "PT_TO_SCE: pid %d, stops = %#x, PC = %#lx, sig = %d",
+ p->p_pid, p->p_stops,
+ (u_long)(uintfptr_t)addr, data);
break;
case PT_TO_SCX:
p->p_stops |= S_PT_SCX;
- CTR2(KTR_PTRACE,
- "PT_TO_SCX: pid %d, stops = %#x", p->p_pid,
- p->p_stops);
+ CTR4(KTR_PTRACE,
+ "PT_TO_SCX: pid %d, stops = %#x, PC = %#lx, sig = %d",
+ p->p_pid, p->p_stops,
+ (u_long)(uintfptr_t)addr, data);
break;
case PT_SYSCALL:
p->p_stops |= S_PT_SCE | S_PT_SCX;
- CTR2(KTR_PTRACE,
- "PT_SYSCALL: pid %d, stops = %#x", p->p_pid,
- p->p_stops);
+ CTR4(KTR_PTRACE,
+ "PT_SYSCALL: pid %d, stops = %#x, PC = %#lx, sig = %d",
+ p->p_pid, p->p_stops,
+ (u_long)(uintfptr_t)addr, data);
break;
case PT_CONTINUE:
- CTR1(KTR_PTRACE,
- "PT_CONTINUE: pid %d", p->p_pid);
+ CTR3(KTR_PTRACE,
+ "PT_CONTINUE: pid %d, PC = %#lx, sig = %d",
+ p->p_pid, (u_long)(uintfptr_t)addr, data);
break;
}
break;
@@ -979,11 +983,12 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
proc_reparent(p, pp);
if (pp == initproc)
p->p_sigparent = SIGCHLD;
- CTR2(KTR_PTRACE,
- "PT_DETACH: pid %d reparented to pid %d",
- p->p_pid, pp->p_pid);
+ CTR3(KTR_PTRACE,
+ "PT_DETACH: pid %d reparented to pid %d, sig %d",
+ p->p_pid, pp->p_pid, data);
} else
- CTR1(KTR_PTRACE, "PT_DETACH: pid %d", p->p_pid);
+ CTR2(KTR_PTRACE, "PT_DETACH: pid %d, sig %d",
+ p->p_pid, data);
p->p_oppid = 0;
p->p_stops = 0;
@@ -1236,10 +1241,10 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data)
if (wrap32)
ptrace_lwpinfo_to32(pl, pl32);
#endif
- CTR5(KTR_PTRACE,
- "PT_LWPINFO: tid %d (pid %d) event %d flags %#x child pid %d",
+ CTR6(KTR_PTRACE,
+ "PT_LWPINFO: tid %d (pid %d) event %d flags %#x child pid %d syscall %d",
td2->td_tid, p->p_pid, pl->pl_event, pl->pl_flags,
- pl->pl_child_pid);
+ pl->pl_child_pid, pl->pl_syscall_code);
break;
case PT_GETNUMLWPS:
OpenPOWER on IntegriCloud