1 # $DragonFly: src/sys/dev/raid/vinum/.gdbinit.kernel,v 1.6 2006/09/09 19:07:27 dillon Exp $
27 output (((int)$ebp)-(int)$esp)/4-4
28 printf " words on stack)\n ebp: "
34 printf " (maximum of "
35 output ((*(int*)$ebp)-(int)$ebp)/4-4
36 printf " parameters possible)\nSaved eip: "
39 output/x (int) ($ebp+8)
41 output (char*) *(int*)($ebp+8)
43 output/x (int) ($ebp+12)
45 output (char*) *(int*)($ebp+12)
47 output/x (int) ($ebp+16)
49 output (char*) *(int*)($ebp+16)
51 output/x (int) ($ebp+20)
53 output (char*) *(int*)($ebp+20)
57 Show the register contents and the first four parameter
58 words of the current frame.
69 printf " (maximum of "
70 output ((*(int*)$ebp)-(int)$ebp)/4-4
71 printf " parameters possible)\nSaved eip: "
74 output/x (int) ($ebp+8)
76 output (char*) *(int*)($ebp+8)
78 output/x (int) ($ebp+12)
80 output (char*) *(int*)($ebp+12)
82 output/x (int) ($ebp+16)
84 output (char*) *(int*)($ebp+16)
86 output/x (int) ($ebp+20)
88 output (char*) *(int*)($ebp+20)
90 output/x (int) ($ebp+24)
92 output (char*) *(int*)($ebp+24)
94 output/x (int) ($ebp+28)
96 output (char*) *(int*)($ebp+28)
98 output/x (int) ($ebp+32)
100 output (char*) *(int*)($ebp+32)
101 printf "\nParm 8 at "
102 output/x (int) ($ebp+36)
104 output (char*) *(int*)($ebp+36)
105 printf "\nParm 9 at "
106 output/x (int) ($ebp+40)
108 output (char*) *(int*)($ebp+40)
109 printf "\nParm 10 at "
110 output/x (int) ($ebp+44)
112 output (char*) *(int*)($ebp+44)
116 Show the register contents and the first ten parameter
117 words of the current frame.
125 x/12x *(int*)($ebp+4)
130 x/12x *(int*)($ebp+8)
135 x/12x *(int*)($ebp+12)
140 x/12x *(int*)($ebp+16)
145 Show the first parameter of current stack frame in various formats
148 Show the second parameter of current stack frame in various formats
151 Show the third parameter of current stack frame in various formats
154 Show the fourth parameter of current stack frame in various formats
157 Show the fifth parameter of current stack frame in various formats
184 Select stack frame 0 and show assembler-level details
187 Select stack frame 1 and show assembler-level details
190 Select stack frame 2 and show assembler-level details
193 Select stack frame 3 and show assembler-level details
196 Select stack frame 4 and show assembler-level details
199 Select stack frame 5 and show assembler-level details
202 Single step 1 instruction (over calls) and show next instruction.
205 Single step 1 instruction (through calls) and show next instruction.
208 List the next 10 instructions from the current IP value
211 Show the last 12 words on stack in hex
214 Show 12 words starting at current BP value in hex
217 target remote /dev/cuaa1
220 Attach to a remote kernel via /dev/cuaa0
224 p (char *)curproc->p_comm
227 Print the command name of the current process
230 set $bp = (struct buf *) $arg0
232 printf " Buffer at 0x%x: dev 0x%x data 0x%x bcount 0x%x doffset 0x%llx resid 0x%x\n", \
234 $bp->b_dev->si_udev, \
237 $bp->b_bio_array[1].bio_offset, \
240 printf " Buffer at 0x%x: dev (none) data 0x%x bcount 0x%x doffset 0x%llx resid 0x%x\n", \
244 $bp->b_bio_array[1].bio_offset, \
247 printf " flags 0x%x: ", $bp->b_flags
248 if $bp->b_flags & 0x10
251 if $bp->b_flags & 0x40
254 if $bp->b_flags & 0x200
257 if $bp->b_flags & 0x800
260 if $bp->b_flags & 0x40000
263 if $bp->b_flags & 0x100000
269 set $bp = (struct buf *) $arg0
274 printf "\nb_qindex: "
276 printf "\nb_usecount: "
277 output $bp->b_usecount
280 printf "\nb_bufsize: "
281 output $bp->b_bufsize
282 printf "\nb_bcount: "
290 printf "\nb_kvasize: "
291 output $bp->b_kvasize
292 printf "\nb_loffset: "
293 output $bp->b_bio_array[0].bio_offset
294 printf "\nb_doffset: "
295 output $bp->b_bio_array[1].bio_offset
296 printf "\nb_iodone: "
297 output $bp->b_bio->bio_done
300 printf "\nb_dirtyoff: "
301 output $bp->b_dirtyoff
302 printf "\nb_dirtyend: "
303 output $bp->b_dirtyend
304 printf "\nb_generation: "
305 output $bp->b_generation
306 printf "\nb_validoff: "
307 output $bp->b_validoff
308 printf "\nb_validend: "
309 output $bp->b_validend
310 printf "\nb_poffset: "
311 output $bp->b_bio_array[2].bio_offset
312 printf "\nb_savekva: "
313 output $bp->b_savekva
314 printf "\nb_driver1: "
315 output $bp->b_driver1
316 printf "\nb_driver2: "
317 output $bp->b_driver2
320 printf "\nb_npages: "
328 printf "Buffer data:\n%s", (char *) bp->b_data
331 Show the contents (char*) of bp->data in the current frame.
334 Show information about the buffer header pointed to by the
335 variable bp in the current frame.
338 Show summary information about the buffer header (struct bp) pointed
342 Show detailled information about the buffer header (struct bp) pointed
346 Show detailled information about the buffer header (struct bp) pointed
347 at by the local variable bp.
350 printf "\n b_vnbufs "
351 output/x bp->b_vnbufs
352 printf "\n b_freelist "
353 output/x bp->b_freelist
358 printf "\n b_qindex "
359 output/x bp->b_qindex
360 printf "\n b_usecount "
361 output/x bp->b_usecount
364 printf "\n b_bufsize "
365 output/x bp->b_bufsize
366 printf "\n b_bcount "
367 output/x bp->b_bcount
374 printf "\n b_kvasize "
375 output/x bp->b_kvasize
376 printf "\n b_doffset "
377 output/x bp->b_bio_array[1].bio_offset
380 printf "\n b_dirtyoff "
381 output/x bp->b_dirtyoff
382 printf "\n b_validoff "
383 output/x bp->b_validoff
387 set boothowto=0x80000000
395 set $aproc = allproc.lh_first
396 set $proc = allproc.lh_first
397 printf " pid proc addr uid ppid pgrp flag stat comm wchan\n"
398 while (--$nproc >= 0)
399 set $pptr = $proc.p_pptr
404 printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
405 $proc.p_pid, $aproc, \
406 $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
407 $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
411 printf "%s ", $proc.p_wmesg
413 printf "%x", $proc.p_wchan
417 set $aproc = $proc.p_list.le_next
418 if ($aproc == 0 && $nproc > 0)
419 set $aproc = zombproc
425 "ps" -- when kernel debugging, type out a ps-like listing of active processes.
429 set $aproc = allproc.lh_first
430 set $proc = allproc.lh_first
431 while (--$nproc >= 0)
432 set $pptr = $proc.p_pptr
433 if ($proc->p_pid == $arg0)
434 set $pcba = $pptr->p_addr->u_pcb
435 printf "ip: %08x sp: %08x bp: %08x bx: %08x\n", $pcba->pcb_eip, $pcba->pcb_esp, $pcba->pcb_ebp, $pcba->pcb_ebx
439 set $aproc = $proc.p_list.le_next
440 if ($aproc == 0 && $nproc > 0)
441 set $aproc = zombproc
447 Show some pcb contents of process whose pid is specified.
452 while (*(int *) $frame > 0xc0000000)
453 set $myebp = *(int *) $frame
454 set $myeip = *(int *) ($frame + 4)
455 printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
462 Show a backtrace from the ebp address specified. This can be used to
463 get a backtrace from any stack resident in memory.
467 set $aproc = allproc.lh_first
468 set $proc = allproc.lh_first
469 while (--$nproc >= 0)
470 if ($proc->p_pid == $arg0)
471 btr $proc->p_addr->u_pcb->pcb_ebp
474 set $aproc = $proc.p_list.le_next
475 if ($aproc == 0 && $nproc > 0)
476 set $aproc = zombproc
483 Show a backtrace for the process whose pid is specified as a parameter.
487 set $aproc = allproc.lh_first
488 set $proc = allproc.lh_first
489 printf " pid proc addr uid ppid pgrp flag stat comm wchan\n"
490 while (--$nproc >= 0)
491 set $pptr = $proc.p_pptr
496 printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
497 $proc.p_pid, $aproc, \
498 $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
499 $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
503 printf "%s ", $proc.p_wmesg
505 printf "%x", $proc.p_wchan
508 if ($proc->p_flag & 4)
509 btr $proc->p_addr->u_pcb->pcb_ebp
514 set $aproc = $proc.p_list.le_next
515 if ($aproc == 0 && $nproc > 0)
516 set $aproc = zombproc
522 Show backtraces for all processes in the system.
525 if ($myvectorproc->p_flag & 4)
526 btr $myvectorproc->p_addr->u_pcb->pcb_ebp
532 Show a backtrace for the process previously selected with 'defproc'.
536 set $aproc = allproc.lh_first
537 set $proc = allproc.lh_first
538 while (--$nproc >= 0)
539 if ($proc->p_pid == $arg0)
540 set $pptr = $proc.p_pptr
544 set $myvectorproc = $proc
546 printf "%5d %08x %08x %4d %5d %5d %06x %d %-10s ", \
547 $proc.p_pid, $aproc, \
548 $proc.p_addr, $proc.p_cred->p_ruid, $pptr->p_pid, \
549 $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
553 printf "%s ", $proc.p_wmesg
555 printf "%x", $proc.p_wchan
562 set $proc = $proc.p_list.le_next
567 Specify a process for btpp and fr commands.
572 if ($myvectorproc->p_flag & 4)
573 set $frame = $myvectorproc->p_addr->u_pcb->pcb_ebp
574 while (($searching == 1) && (*(int *) $frame > 0xc0000000))
575 set $myebp = *(int *) $frame
576 set $myeip = *(int *) ($frame + 4)
578 printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
580 printf "Called from %8x, stack frame at %8x\n", *(int *) ($myebp+4), *(int *) $myebp
581 printf "last 20 local variables:\n"
583 printf "call parameters:\n"
592 echo frame not found\n
595 printf "process %d is not loaded in memory\n", $myvectorproc->p_pid
599 Show the frame of the stack of the process previously selected with 'defproc'.
604 if (vp->v_type == VBLK)
605 p *vp->v_un.vu_cdev.vu_cdevinfo
606 printf "numoutput: %d\n", vp->v_numoutput
608 echo "Not a block device"
612 Show some information of the vnode pointed to by the local variable vp.
615 echo Check your .gdbinit, it contains a y command\n
618 set $file = files.tqh_first
619 printf "Id Refs Address Size Name\n"
621 printf "%2d %4d 0x%8x %8x %s\n", \
627 set $file = $file->link.tqe_next
631 Equivalent of the kldstat(9) command, without options.
634 printf "%s", msgbufp->msg_ptr
637 Print the system message buffer (dmesg). This can take a long time due to the time it takes to transmit the data across a serial line.