The utrace User Debugging Infrastructure


Table of Contents

1. utrace concepts
Introduction
Events and Callbacks
Stopping Safely
Writing well-behaved callbacks
Using UTRACE_STOP
Tear-down Races
Primacy of SIGKILL
Final callbacks
Engine and task pointers
Serialization of DEATH and REAP
Interlock with final callbacks
Using utrace_barrier
2. utrace core API
enum utrace_resume_action — engine's choice of action for a traced task
utrace_resume_actionenum utrace_resume_action from callback action
enum utrace_signal_action — disposition of signal
utrace_signal_actionenum utrace_signal_action from callback action
enum utrace_syscall_action — disposition of system call attempt
utrace_syscall_actionenum utrace_syscall_action from callback action
struct utrace_engine — per-engine structure
utrace_engine_get — acquire a reference on a struct utrace_engine
utrace_engine_put — release a reference on a struct utrace_engine
struct utrace_engine_ops — tracing engine callbacks
struct utrace_examiner — private state for using utrace_prepare_examine
utrace_control_pid — control a thread being traced by a tracing engine
utrace_set_events_pid — choose which event reports a tracing engine gets
utrace_barrier_pid — synchronize with simultaneous tracing callbacks
utrace_attach_task — attach new engine, or look up an attached engine
utrace_attach_pid — attach new engine, or look up an attached engine
utrace_set_events — choose which event reports a tracing engine gets
utrace_control — control a thread being traced by a tracing engine
utrace_barrier — synchronize with simultaneous tracing callbacks
utrace_prepare_examine — prepare to examine thread state
utrace_finish_examine — complete an examination of thread state
3. Machine State
struct user_regset
System Call Information
System Call Tracing
4. Kernel Internals
Core Calls In
Architecture Calls Out
<asm/ptrace.h>
<asm/syscall.h>
<linux/tracehook.h>