amd64: dump standard registers when crashing
Sample output: Fatal trap 12: page fault while in kernel mode cpuid = 1; apic id = 01 fault virtual address = 0x2 fault code = supervisor write data, page not present instruction pointer = 0x20:0xffffffff80556853 stack pointer = 0x28:0xffffffff8141bf50 frame pointer = 0x28:0xffffffff8141bfa0 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 0 (swapper) rdi: fffff80002c9c400 rsi: ffffffff80b89183 rdx: 0 rcx: 2 r8: fe r9: 1 rax: fffff80002c9c400 rbx: 1 rbp: ffffffff8141bfa0 r10: 0 r11: ffffffff80b97f8c r12: 0 r13: 0 r14: 0 r15: 0 trap number = 12 panic: page fault cpuid = 1 time = 1 Reviewed by: kib Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D36348
This commit is contained in:
parent
49afea1059
commit
e621cb0be2
@ -931,6 +931,17 @@ trap_fatal(struct trapframe *frame, vm_offset_t eva)
|
||||
printf("current process = %d (%s)\n",
|
||||
curproc->p_pid, curthread->td_name);
|
||||
|
||||
printf("rdi: %16lx rsi: %16lx rdx: %16lx\n", frame->tf_rdi,
|
||||
frame->tf_rsi, frame->tf_rdx);
|
||||
printf("rcx: %16lx r8: %16lx r9: %16lx\n", frame->tf_rcx,
|
||||
frame->tf_r8, frame->tf_r9);
|
||||
printf("rax: %16lx rbx: %16lx rbp: %16lx\n", frame->tf_rax,
|
||||
frame->tf_rbx, frame->tf_rbp);
|
||||
printf("r10: %16lx r11: %16lx r12: %16lx\n", frame->tf_r10,
|
||||
frame->tf_r11, frame->tf_r12);
|
||||
printf("r13: %16lx r14: %16lx r15: %16lx\n", frame->tf_r13,
|
||||
frame->tf_r14, frame->tf_r15);
|
||||
|
||||
#ifdef KDB
|
||||
if (debugger_on_trap) {
|
||||
kdb_why = KDB_WHY_TRAP;
|
||||
|
Loading…
Reference in New Issue
Block a user