diff options
| author | kamil <kamil@NetBSD.org> | 2018-05-01 13:48:38 +0000 |
|---|---|---|
| committer | kamil <kamil@NetBSD.org> | 2018-05-01 13:48:38 +0000 |
| commit | a33cad2a0730a1bb395f09c5ef34f3fa131bb448 (patch) | |
| tree | 51a2e1806c56a138a331bf06cbf45be0474f98d9 /sys/modules/exec_script | |
| parent | 24dd41c440e2b5263a3118a0093cf9886faf8d56 (diff) | |
Improve the proc_stoptrace() function
proc_stoptrace() is dedicated for emitting a syscall trap for a debugger,
either on entry or exit of the system function routine.
Changes:
- Change an if() branch of an invalid condition of being traced by
initproc (PID1) to KASSERT(9).
- Assert that the current process has set appropriate flags (PSL_TRACED
and PSL_SYSCALL).
- Use ktrpoint(KTR_PSIG) and ktrpsig()/e_ktrpsig() in order to register
the emitted signal for the ktrace(1) event debugging.
Example of the new output from kdump(1) for the syscall debugger traps,
containing SIGTRAP notification with TRAP_SCE and TRAP_SCX (around
the getpid(2) call).
$ kdump /tmp/1.dat.qemu |grep 663
588 1 t_ptrace_waitpid RET fork 663/0x297
663 1 t_ptrace_waitpid EMUL "netbsd"
663 1 t_ptrace_waitpid RET fork 0
663 1 t_ptrace_waitpid CALL ptrace(PT_TRACE_ME,0,0,0)
663 1 t_ptrace_waitpid RET ptrace 0
663 1 t_ptrace_waitpid CALL _lwp_self
663 1 t_ptrace_waitpid RET _lwp_self 1
663 1 t_ptrace_waitpid CALL _lwp_kill(1,0x11)
663 1 t_ptrace_waitpid RET _lwp_kill 0
588 1 t_ptrace_waitpid RET __wait450 663/0x297
663 1 t_ptrace_waitpid CALL getpid
588 1 t_ptrace_waitpid RET __wait450 663/0x297
663 1 t_ptrace_waitpid PSIG SIGTRAP SIG_DFL: code=TRAP_SCE, addr=0x0, trap=0)
663 1 t_ptrace_waitpid RET getpid 663/0x297, 588/0x24c
588 1 t_ptrace_waitpid RET __wait450 663/0x297
663 1 t_ptrace_waitpid PSIG SIGTRAP SIG_DFL: code=TRAP_SCX, addr=0x0, trap=0)
663 1 t_ptrace_waitpid CALL exit(5)
588 1 t_ptrace_waitpid RET __wait450 663/0x297
Sponsored by <The NetBSD Foundation>
Diffstat (limited to 'sys/modules/exec_script')
0 files changed, 0 insertions, 0 deletions
