Get rid of struct user/UAREA.
[dragonfly.git] / sys / dev / raid / vinum / .gdbinit.kernel
blob1de0a802148cab28c2e6d5f6fb02b59fd08b9ebc
1 # $DragonFly: src/sys/dev/raid/vinum/.gdbinit.kernel,v 1.7 2007/02/25 23:17:12 corecode Exp $
2 set remotebaud 38400
3 set remotetimeout 1
4 set complaints 1
5 set print pretty
6 define xi
7 x/10i $eip
8 end
9 define xs
10 x/12x $esp
11 end
12 define xb
13 x/12x $ebp
14 end
15 define z
17 x/1i $eip
18 end
19 define zs
21 x/1i $eip
22 end
23 define xp
24 printf "      esp: " 
25 output/x $esp
26 echo  (
27 output (((int)$ebp)-(int)$esp)/4-4
28 printf " words on stack)\n      ebp: " 
29 output/x $ebp
30 printf "\n      eip: " 
31 x/1i $eip
32 printf "Saved ebp: " 
33 output/x *(int*)$ebp
34 printf " (maximum of "  
35 output ((*(int*)$ebp)-(int)$ebp)/4-4
36 printf " parameters possible)\nSaved eip: " 
37 x/1i *(int*)($ebp+4)
38 printf "\nParm 1 at " 
39 output/x (int) ($ebp+8)
40 printf ":    " 
41 output (char*) *(int*)($ebp+8)
42 printf "\nParm 2 at " 
43 output/x (int) ($ebp+12)
44 printf ":    " 
45 output (char*) *(int*)($ebp+12)
46 printf "\nParm 3 at " 
47 output/x (int) ($ebp+16)
48 printf ":    " 
49 output (char*) *(int*)($ebp+16)
50 printf "\nParm 4 at " 
51 output/x (int) ($ebp+20)
52 printf ":    " 
53 output (char*) *(int*)($ebp+20)
54 echo \n
55 end
56 document xp
57 Show the register contents and the first four parameter
58 words of the current frame.
59 end
60 define xxp
61 printf "      esp: " 
62 output/x $esp
63 printf "\n      ebp: " 
64 output/x $ebp
65 printf "\n      eip: " 
66 x/1i $eip
67 printf "Saved ebp: " 
68 output/x *(int*)$ebp
69 printf " (maximum of "  
70 output ((*(int*)$ebp)-(int)$ebp)/4-4
71 printf " parameters possible)\nSaved eip: " 
72 x/1i *(int*)($ebp+4)
73 printf "\nParm  1 at " 
74 output/x (int) ($ebp+8)
75 printf ":    " 
76 output (char*) *(int*)($ebp+8)
77 printf "\nParm  2 at " 
78 output/x (int) ($ebp+12)
79 printf ":    " 
80 output (char*) *(int*)($ebp+12)
81 printf "\nParm  3 at " 
82 output/x (int) ($ebp+16)
83 printf ":    " 
84 output (char*) *(int*)($ebp+16)
85 printf "\nParm  4 at " 
86 output/x (int) ($ebp+20)
87 printf ":    " 
88 output (char*) *(int*)($ebp+20)
89 printf "\nParm  5 at " 
90 output/x (int) ($ebp+24)
91 printf ":    " 
92 output (char*) *(int*)($ebp+24)
93 printf "\nParm  6 at " 
94 output/x (int) ($ebp+28)
95 printf ":    " 
96 output (char*) *(int*)($ebp+28)
97 printf "\nParm  7 at " 
98 output/x (int) ($ebp+32)
99 printf ":    " 
100 output (char*) *(int*)($ebp+32)
101 printf "\nParm  8 at " 
102 output/x (int) ($ebp+36)
103 printf ":    " 
104 output (char*) *(int*)($ebp+36)
105 printf "\nParm  9 at " 
106 output/x (int) ($ebp+40)
107 printf ":    " 
108 output (char*) *(int*)($ebp+40)
109 printf "\nParm 10 at " 
110 output/x (int) ($ebp+44)
111 printf ":    " 
112 output (char*) *(int*)($ebp+44)
113 echo \n
115 document xxp
116 Show the register contents and the first ten parameter
117 words of the current frame.
119 define xp0
120 x/12x *(int*)$esp
121 p *(int*)$esp
122 p (char*)*$esp
124 define xp1
125 x/12x *(int*)($ebp+4)
126 p *(int*)($ebp+4)
127 p (char**)($ebp+4)
129 define xp2
130 x/12x *(int*)($ebp+8)
131 p *(int*)($ebp+8)
132 p *(char**)($ebp+8)
134 define xp3
135 x/12x *(int*)($ebp+12)
136 p *(int*)($ebp+12)
137 p (char**)($ebp+12)
139 define xp4
140 x/12x *(int*)($ebp+16)
141 p *(int*)($ebp+16)
142 p (char**)($ebp+16)
144 document xp0
145 Show the first parameter of current stack frame in various formats
147 document xp1
148 Show the second parameter of current stack frame in various formats
150 document xp2
151 Show the third parameter of current stack frame in various formats
153 document xp3
154 Show the fourth parameter of current stack frame in various formats
156 document xp4
157 Show the fifth parameter of current stack frame in various formats
159 define f0
160 f 0
163 define f1
164 f 1
167 define f2
168 f 2
171 define f3
172 f 3
175 define f4
176 f 4
179 define f5
180 f 5
183 document f0
184 Select stack frame 0 and show assembler-level details
186 document f1
187 Select stack frame 1 and show assembler-level details
189 document f2
190 Select stack frame 2 and show assembler-level details
192 document f3
193 Select stack frame 3 and show assembler-level details
195 document f4
196 Select stack frame 4 and show assembler-level details
198 document f5
199 Select stack frame 5 and show assembler-level details
201 document z
202 Single step 1 instruction (over calls) and show next instruction.
204 document zs
205 Single step 1 instruction (through calls) and show next instruction.
207 document xi
208 List the next 10 instructions from the current IP value
210 document xs
211 Show the last 12 words on stack in hex
213 document xb
214 Show 12 words starting at current BP value in hex
216 define tr
217 target remote /dev/cuaa1
219 document tr
220 Attach to a remote kernel via /dev/cuaa0
222 set output-radix 16
223 define pname
224 p (char *)curproc->p_comm
225 end 
226 document pname
227 Print the command name of the current process
229 define bpp
230 set $bp = (struct buf *) $arg0
231     if $bp->b_dev
232       printf "  Buffer at 0x%x: dev 0x%x  data 0x%x  bcount 0x%x  doffset 0x%llx resid 0x%x\n", \
233         $bp, \
234         $bp->b_dev->si_udev, \
235         $bp->b_data, \
236         $bp->b_bcount, \
237         $bp->b_bio_array[1].bio_offset, \
238         $bp->b_resid
239     else
240       printf "  Buffer at 0x%x: dev (none) data 0x%x  bcount 0x%x  doffset 0x%llx resid 0x%x\n", \
241         $bp, \
242         $bp->b_data, \
243         $bp->b_bcount, \
244         $bp->b_bio_array[1].bio_offset, \
245         $bp->b_resid
246     end
247     printf "   flags 0x%x: ", $bp->b_flags
248       if $bp->b_flags & 0x10
249         printf "busy "
250       end
251       if $bp->b_flags & 0x40
252         printf "call "
253       end
254       if $bp->b_flags & 0x200
255         printf "done "
256       end
257       if $bp->b_flags & 0x800
258         printf "error "
259       end
260       if $bp->b_flags & 0x40000
261         printf "phys "
262       end
263       if $bp->b_flags & 0x100000
264         printf "read "
265       end
266     printf "\n"
268 define bpl
269 set $bp = (struct buf *) $arg0
270 printf "b_proc: "
271 output $bp->b_proc
272 printf "\nb_flags:      "
273 output $bp->b_flags
274 printf "\nb_qindex:     "
275 output $bp->b_qindex
276 printf "\nb_usecount:   "
277 output $bp->b_usecount
278 printf "\nb_error:      "
279 output $bp->b_error
280 printf "\nb_bufsize:    "
281 output $bp->b_bufsize
282 printf "\nb_bcount:     "
283 output $bp->b_bcount
284 printf "\nb_resid:      "
285 output $bp->b_resid
286 printf "\nb_dev:        "
287 output $bp->b_dev
288 printf "\nb_data:       "
289 output $bp->b_data
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
298 printf "\nb_vp: "
299 output $bp->b_vp
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
318 printf "\nb_spc:        "
319 output $bp->b_spc
320 printf "\nb_npages:     "
321 output $bp->b_npages
322 printf "\n"
324 define bp
325 bpp bp
327 define bpd
328     printf "Buffer data:\n%s", (char *) bp->b_data
330 document bpd
331 Show the contents (char*) of bp->data in the current frame.
333 document bp
334 Show information about the buffer header pointed to by the
335 variable bp in the current frame.
337 document bpp
338 Show summary information about the buffer header (struct bp) pointed
339 at by the parameter.
341 document bpl
342 Show detailled information about the buffer header (struct bp) pointed
343 at by the parameter.
345 document bpl
346 Show detailled information about the buffer header (struct bp) pointed
347 at by the local variable bp.
349 define bx
350 printf "\n b_vnbufs " 
351 output/x bp->b_vnbufs
352 printf "\n b_freelist " 
353 output/x bp->b_freelist
354 printf "\n b_act " 
355 output/x bp->b_act
356 printf "\n b_flags " 
357 output/x bp->b_flags
358 printf "\n b_qindex " 
359 output/x bp->b_qindex
360 printf "\n b_usecount " 
361 output/x bp->b_usecount
362 printf "\n b_error " 
363 output/x bp->b_error
364 printf "\n b_bufsize " 
365 output/x bp->b_bufsize
366 printf "\n b_bcount " 
367 output/x bp->b_bcount
368 printf "\n b_resid " 
369 output/x bp->b_resid
370 printf "\n b_dev " 
371 output/x bp->b_dev
372 printf "\n b_data " 
373 output/x bp->b_data
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
378 printf "\n b_vp " 
379 output/x bp->b_vp
380 printf "\n b_dirtyoff " 
381 output/x bp->b_dirtyoff
382 printf "\n b_validoff " 
383 output/x bp->b_validoff
384 echo \n
386 define ddb
387 set boothowto=0x80000000
390 document ddb
391 Switch back to ddb.
393 define ps
394     set $nproc = nprocs
395     set $aproc = allproc.lh_first
396     set $proc = allproc.lh_first
397     printf "  pid    proc    uid  ppid  pgrp   flag stat comm         wchan\n"
398     while (--$nproc >= 0)
399         set $pptr = $proc.p_pptr
400         if ($pptr == 0)
401            set $pptr = $proc
402         end
403         if ($proc.p_stat)
404             printf "%5d %08x %4d %5d %5d  %06x  %d  %-10s   ", \
405                    $proc.p_pid, $aproc, \
406                    $proc.p_cred->p_ruid, $pptr->p_pid, \
407                    $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
408                    &$proc.p_comm[0]
409             if ($proc.p_wchan)
410                 if ($proc.p_wmesg)
411                     printf "%s ", $proc.p_wmesg
412                 end
413                 printf "%x", $proc.p_wchan
414             end
415             printf "\n"
416         end
417         set $aproc = $proc.p_list.le_next
418         if ($aproc == 0 && $nproc > 0)
419             set $aproc = zombproc
420         end
421         set $proc = $aproc
422     end
424 document ps
425 "ps" -- when kernel debugging, type out a ps-like listing of active processes.
427 define pcb
428     set $nproc = nprocs
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
436            x/1i $pcba->pcb_eip
437            set $nproc = 0
438         end
439         set $aproc = $proc.p_list.le_next
440         if ($aproc == 0 && $nproc > 0)
441             set $aproc = zombproc
442         end
443         set $proc = $aproc
444     end
446 document pcb
447 Show some pcb contents of process whose pid is specified.
449 define btr
450 set $frame = $arg0
451 set $fno = 0
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
456   x/1i $myeip
457   set $frame = $myebp
458   set $fno = $fno + 1
461 document btr
462 Show a backtrace from the ebp address specified.  This can be used to
463 get a backtrace from any stack resident in memory.
465 define btp
466     set $nproc = nprocs
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
472            set $nproc = 0
473         else
474            set $aproc = $proc.p_list.le_next
475            if ($aproc == 0 && $nproc > 0)
476               set $aproc = zombproc
477            end
478            set $proc = $aproc
479         end
480    end
482 document btp
483 Show a backtrace for the process whose pid is specified as a parameter.
485 define btpa
486     set $nproc = nprocs
487     set $aproc = allproc.lh_first
488     set $proc = allproc.lh_first
489     printf "  pid    proc    uid  ppid  pgrp   flag stat comm         wchan\n"
490     while (--$nproc >= 0)
491         set $pptr = $proc.p_pptr
492         if ($pptr == 0)
493            set $pptr = $proc
494         end
495         if ($proc.p_stat)
496             printf "%5d %08x %4d %5d %5d  %06x %d  %-10s   ", \
497                    $proc.p_pid, $aproc, \
498                    $proc.p_cred->p_ruid, $pptr->p_pid, \
499                    $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
500                    &$proc.p_comm[0]
501             if ($proc.p_wchan)
502                 if ($proc.p_wmesg)
503                     printf "%s ", $proc.p_wmesg
504                 end
505                 printf "%x", $proc.p_wchan
506             end
507             printf "\n"
508            if ($proc->p_flag & 4)
509               btr $proc->p_addr->u_pcb->pcb_ebp
510            else
511               echo (not loaded)\n
512            end
513         end
514         set $aproc = $proc.p_list.le_next
515         if ($aproc == 0 && $nproc > 0)
516             set $aproc = zombproc
517         end
518         set $proc = $aproc
519     end
521 document btpa
522 Show backtraces for all processes in the system.
524 define btpp
525   if ($myvectorproc->p_flag & 4)
526     btr $myvectorproc->p_addr->u_pcb->pcb_ebp
527   else
528     echo (not loaded)\n
529   end
531 document btpp
532 Show a backtrace for the process previously selected with 'defproc'.
534 define defproc
535     set $nproc = nprocs
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
541            if ($pptr == 0)
542               set $pptr = $proc
543            end
544            set $myvectorproc = $proc
545            if ($proc.p_stat)
546                printf "%5d %08x %4d %5d %5d  %06x %d  %-10s   ", \
547                       $proc.p_pid, $aproc, \
548                       $proc.p_cred->p_ruid, $pptr->p_pid, \
549                      $proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_stat, \
550                      &$proc.p_comm[0]
551                if ($proc.p_wchan)
552                    if ($proc.p_wmesg)
553                        printf "%s ", $proc.p_wmesg
554                   end
555                   printf "%x", $proc.p_wchan
556                end
557                printf "\n"
558               end
559            btpp
560            set $nproc = 0
561         else
562            set $proc = $proc.p_list.le_next
563         end
564    end
566 document defproc
567 Specify a process for btpp and fr commands.
569 define fr
570 set $fno = 0
571 set $searching = 1
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)
577     if ($fno == $arg0)
578       printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
579       x/1i $myeip
580       printf "Called from %8x, stack frame at %8x\n", *(int *) ($myebp+4), *(int *) $myebp
581       printf "last 20 local variables:\n"
582       x/20x ($myebp-80)
583       printf "call parameters:\n"
584       x/8x ($myebp+8)
585       set $searching = 0
586     else
587       set $frame = $myebp
588       set $fno = $fno + 1
589     end
590   end
591   if ($searching == 1)
592     echo frame not found\n
593   end
594 else
595   printf "process %d is not loaded in memory\n", $myvectorproc->p_pid
598 document fr
599 Show the frame of the stack of the process previously selected with 'defproc'.
601 set height 70
602 set width 120
603 define vdev
604 if (vp->v_type == VBLK)
605   p *vp->v_un.vu_cdev.vu_cdevinfo
606   printf "numoutput: %d\n", vp->v_numoutput
607 else
608   echo "Not a block device"
611 document vdev
612 Show some information of the vnode pointed to by the local variable vp.
614 define y
615 echo Check your .gdbinit, it contains a y command\n
617 define kldstat
618    set $file = files.tqh_first
619    printf "Id Refs Address    Size     Name\n"
620    while ($file != 0)
621      printf "%2d %4d 0x%8x %8x %s\n",   \
622         $file->id,                      \
623         $file->refs,                    \
624         $file->address,                 \
625         $file->size,                    \
626         $file->filename
627      set $file = $file->link.tqe_next
628    end
630 document kldstat
631 Equivalent of the kldstat(9) command, without options.
633 define msgbuf
634 printf "%s", msgbufp->msg_ptr
636 document msgbuf
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.