xref: /dflybsd-src/sys/dev/raid/vinum/.gdbinit.kernel (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino# $DragonFly: src/sys/dev/raid/vinum/.gdbinit.kernel,v 1.8 2007/05/09 00:53:34 dillon Exp $
286d7f5d3SJohn Marinoset remotebaud 38400
386d7f5d3SJohn Marinoset remotetimeout 1
486d7f5d3SJohn Marinoset complaints 1
586d7f5d3SJohn Marinoset print pretty
686d7f5d3SJohn Marinodefine xi
786d7f5d3SJohn Marinox/10i $eip
886d7f5d3SJohn Marinoend
986d7f5d3SJohn Marinodefine xs
1086d7f5d3SJohn Marinox/12x $esp
1186d7f5d3SJohn Marinoend
1286d7f5d3SJohn Marinodefine xb
1386d7f5d3SJohn Marinox/12x $ebp
1486d7f5d3SJohn Marinoend
1586d7f5d3SJohn Marinodefine z
1686d7f5d3SJohn Marinoni
1786d7f5d3SJohn Marinox/1i $eip
1886d7f5d3SJohn Marinoend
1986d7f5d3SJohn Marinodefine zs
2086d7f5d3SJohn Marinosi
2186d7f5d3SJohn Marinox/1i $eip
2286d7f5d3SJohn Marinoend
2386d7f5d3SJohn Marinodefine xp
2486d7f5d3SJohn Marinoprintf "      esp: "
2586d7f5d3SJohn Marinooutput/x $esp
2686d7f5d3SJohn Marinoecho  (
2786d7f5d3SJohn Marinooutput (((int)$ebp)-(int)$esp)/4-4
2886d7f5d3SJohn Marinoprintf " words on stack)\n      ebp: "
2986d7f5d3SJohn Marinooutput/x $ebp
3086d7f5d3SJohn Marinoprintf "\n      eip: "
3186d7f5d3SJohn Marinox/1i $eip
3286d7f5d3SJohn Marinoprintf "Saved ebp: "
3386d7f5d3SJohn Marinooutput/x *(int*)$ebp
3486d7f5d3SJohn Marinoprintf " (maximum of "
3586d7f5d3SJohn Marinooutput ((*(int*)$ebp)-(int)$ebp)/4-4
3686d7f5d3SJohn Marinoprintf " parameters possible)\nSaved eip: "
3786d7f5d3SJohn Marinox/1i *(int*)($ebp+4)
3886d7f5d3SJohn Marinoprintf "\nParm 1 at "
3986d7f5d3SJohn Marinooutput/x (int) ($ebp+8)
4086d7f5d3SJohn Marinoprintf ":    "
4186d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+8)
4286d7f5d3SJohn Marinoprintf "\nParm 2 at "
4386d7f5d3SJohn Marinooutput/x (int) ($ebp+12)
4486d7f5d3SJohn Marinoprintf ":    "
4586d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+12)
4686d7f5d3SJohn Marinoprintf "\nParm 3 at "
4786d7f5d3SJohn Marinooutput/x (int) ($ebp+16)
4886d7f5d3SJohn Marinoprintf ":    "
4986d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+16)
5086d7f5d3SJohn Marinoprintf "\nParm 4 at "
5186d7f5d3SJohn Marinooutput/x (int) ($ebp+20)
5286d7f5d3SJohn Marinoprintf ":    "
5386d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+20)
5486d7f5d3SJohn Marinoecho \n
5586d7f5d3SJohn Marinoend
5686d7f5d3SJohn Marinodocument xp
5786d7f5d3SJohn MarinoShow the register contents and the first four parameter
5886d7f5d3SJohn Marinowords of the current frame.
5986d7f5d3SJohn Marinoend
6086d7f5d3SJohn Marinodefine xxp
6186d7f5d3SJohn Marinoprintf "      esp: "
6286d7f5d3SJohn Marinooutput/x $esp
6386d7f5d3SJohn Marinoprintf "\n      ebp: "
6486d7f5d3SJohn Marinooutput/x $ebp
6586d7f5d3SJohn Marinoprintf "\n      eip: "
6686d7f5d3SJohn Marinox/1i $eip
6786d7f5d3SJohn Marinoprintf "Saved ebp: "
6886d7f5d3SJohn Marinooutput/x *(int*)$ebp
6986d7f5d3SJohn Marinoprintf " (maximum of "
7086d7f5d3SJohn Marinooutput ((*(int*)$ebp)-(int)$ebp)/4-4
7186d7f5d3SJohn Marinoprintf " parameters possible)\nSaved eip: "
7286d7f5d3SJohn Marinox/1i *(int*)($ebp+4)
7386d7f5d3SJohn Marinoprintf "\nParm  1 at "
7486d7f5d3SJohn Marinooutput/x (int) ($ebp+8)
7586d7f5d3SJohn Marinoprintf ":    "
7686d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+8)
7786d7f5d3SJohn Marinoprintf "\nParm  2 at "
7886d7f5d3SJohn Marinooutput/x (int) ($ebp+12)
7986d7f5d3SJohn Marinoprintf ":    "
8086d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+12)
8186d7f5d3SJohn Marinoprintf "\nParm  3 at "
8286d7f5d3SJohn Marinooutput/x (int) ($ebp+16)
8386d7f5d3SJohn Marinoprintf ":    "
8486d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+16)
8586d7f5d3SJohn Marinoprintf "\nParm  4 at "
8686d7f5d3SJohn Marinooutput/x (int) ($ebp+20)
8786d7f5d3SJohn Marinoprintf ":    "
8886d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+20)
8986d7f5d3SJohn Marinoprintf "\nParm  5 at "
9086d7f5d3SJohn Marinooutput/x (int) ($ebp+24)
9186d7f5d3SJohn Marinoprintf ":    "
9286d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+24)
9386d7f5d3SJohn Marinoprintf "\nParm  6 at "
9486d7f5d3SJohn Marinooutput/x (int) ($ebp+28)
9586d7f5d3SJohn Marinoprintf ":    "
9686d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+28)
9786d7f5d3SJohn Marinoprintf "\nParm  7 at "
9886d7f5d3SJohn Marinooutput/x (int) ($ebp+32)
9986d7f5d3SJohn Marinoprintf ":    "
10086d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+32)
10186d7f5d3SJohn Marinoprintf "\nParm  8 at "
10286d7f5d3SJohn Marinooutput/x (int) ($ebp+36)
10386d7f5d3SJohn Marinoprintf ":    "
10486d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+36)
10586d7f5d3SJohn Marinoprintf "\nParm  9 at "
10686d7f5d3SJohn Marinooutput/x (int) ($ebp+40)
10786d7f5d3SJohn Marinoprintf ":    "
10886d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+40)
10986d7f5d3SJohn Marinoprintf "\nParm 10 at "
11086d7f5d3SJohn Marinooutput/x (int) ($ebp+44)
11186d7f5d3SJohn Marinoprintf ":    "
11286d7f5d3SJohn Marinooutput (char*) *(int*)($ebp+44)
11386d7f5d3SJohn Marinoecho \n
11486d7f5d3SJohn Marinoend
11586d7f5d3SJohn Marinodocument xxp
11686d7f5d3SJohn MarinoShow the register contents and the first ten parameter
11786d7f5d3SJohn Marinowords of the current frame.
11886d7f5d3SJohn Marinoend
11986d7f5d3SJohn Marinodefine xp0
12086d7f5d3SJohn Marinox/12x *(int*)$esp
12186d7f5d3SJohn Marinop *(int*)$esp
12286d7f5d3SJohn Marinop (char*)*$esp
12386d7f5d3SJohn Marinoend
12486d7f5d3SJohn Marinodefine xp1
12586d7f5d3SJohn Marinox/12x *(int*)($ebp+4)
12686d7f5d3SJohn Marinop *(int*)($ebp+4)
12786d7f5d3SJohn Marinop (char**)($ebp+4)
12886d7f5d3SJohn Marinoend
12986d7f5d3SJohn Marinodefine xp2
13086d7f5d3SJohn Marinox/12x *(int*)($ebp+8)
13186d7f5d3SJohn Marinop *(int*)($ebp+8)
13286d7f5d3SJohn Marinop *(char**)($ebp+8)
13386d7f5d3SJohn Marinoend
13486d7f5d3SJohn Marinodefine xp3
13586d7f5d3SJohn Marinox/12x *(int*)($ebp+12)
13686d7f5d3SJohn Marinop *(int*)($ebp+12)
13786d7f5d3SJohn Marinop (char**)($ebp+12)
13886d7f5d3SJohn Marinoend
13986d7f5d3SJohn Marinodefine xp4
14086d7f5d3SJohn Marinox/12x *(int*)($ebp+16)
14186d7f5d3SJohn Marinop *(int*)($ebp+16)
14286d7f5d3SJohn Marinop (char**)($ebp+16)
14386d7f5d3SJohn Marinoend
14486d7f5d3SJohn Marinodocument xp0
14586d7f5d3SJohn MarinoShow the first parameter of current stack frame in various formats
14686d7f5d3SJohn Marinoend
14786d7f5d3SJohn Marinodocument xp1
14886d7f5d3SJohn MarinoShow the second parameter of current stack frame in various formats
14986d7f5d3SJohn Marinoend
15086d7f5d3SJohn Marinodocument xp2
15186d7f5d3SJohn MarinoShow the third parameter of current stack frame in various formats
15286d7f5d3SJohn Marinoend
15386d7f5d3SJohn Marinodocument xp3
15486d7f5d3SJohn MarinoShow the fourth parameter of current stack frame in various formats
15586d7f5d3SJohn Marinoend
15686d7f5d3SJohn Marinodocument xp4
15786d7f5d3SJohn MarinoShow the fifth parameter of current stack frame in various formats
15886d7f5d3SJohn Marinoend
15986d7f5d3SJohn Marinodefine f0
16086d7f5d3SJohn Marinof 0
16186d7f5d3SJohn Marinoxp
16286d7f5d3SJohn Marinoend
16386d7f5d3SJohn Marinodefine f1
16486d7f5d3SJohn Marinof 1
16586d7f5d3SJohn Marinoxp
16686d7f5d3SJohn Marinoend
16786d7f5d3SJohn Marinodefine f2
16886d7f5d3SJohn Marinof 2
16986d7f5d3SJohn Marinoxp
17086d7f5d3SJohn Marinoend
17186d7f5d3SJohn Marinodefine f3
17286d7f5d3SJohn Marinof 3
17386d7f5d3SJohn Marinoxp
17486d7f5d3SJohn Marinoend
17586d7f5d3SJohn Marinodefine f4
17686d7f5d3SJohn Marinof 4
17786d7f5d3SJohn Marinoxp
17886d7f5d3SJohn Marinoend
17986d7f5d3SJohn Marinodefine f5
18086d7f5d3SJohn Marinof 5
18186d7f5d3SJohn Marinoxp
18286d7f5d3SJohn Marinoend
18386d7f5d3SJohn Marinodocument f0
18486d7f5d3SJohn MarinoSelect stack frame 0 and show assembler-level details
18586d7f5d3SJohn Marinoend
18686d7f5d3SJohn Marinodocument f1
18786d7f5d3SJohn MarinoSelect stack frame 1 and show assembler-level details
18886d7f5d3SJohn Marinoend
18986d7f5d3SJohn Marinodocument f2
19086d7f5d3SJohn MarinoSelect stack frame 2 and show assembler-level details
19186d7f5d3SJohn Marinoend
19286d7f5d3SJohn Marinodocument f3
19386d7f5d3SJohn MarinoSelect stack frame 3 and show assembler-level details
19486d7f5d3SJohn Marinoend
19586d7f5d3SJohn Marinodocument f4
19686d7f5d3SJohn MarinoSelect stack frame 4 and show assembler-level details
19786d7f5d3SJohn Marinoend
19886d7f5d3SJohn Marinodocument f5
19986d7f5d3SJohn MarinoSelect stack frame 5 and show assembler-level details
20086d7f5d3SJohn Marinoend
20186d7f5d3SJohn Marinodocument z
20286d7f5d3SJohn MarinoSingle step 1 instruction (over calls) and show next instruction.
20386d7f5d3SJohn Marinoend
20486d7f5d3SJohn Marinodocument zs
20586d7f5d3SJohn MarinoSingle step 1 instruction (through calls) and show next instruction.
20686d7f5d3SJohn Marinoend
20786d7f5d3SJohn Marinodocument xi
20886d7f5d3SJohn MarinoList the next 10 instructions from the current IP value
20986d7f5d3SJohn Marinoend
21086d7f5d3SJohn Marinodocument xs
21186d7f5d3SJohn MarinoShow the last 12 words on stack in hex
21286d7f5d3SJohn Marinoend
21386d7f5d3SJohn Marinodocument xb
21486d7f5d3SJohn MarinoShow 12 words starting at current BP value in hex
21586d7f5d3SJohn Marinoend
21686d7f5d3SJohn Marinodefine tr
21786d7f5d3SJohn Marinotarget remote /dev/cuaa1
21886d7f5d3SJohn Marinoend
21986d7f5d3SJohn Marinodocument tr
22086d7f5d3SJohn MarinoAttach to a remote kernel via /dev/cuaa0
22186d7f5d3SJohn Marinoend
22286d7f5d3SJohn Marinoset output-radix 16
22386d7f5d3SJohn Marinodefine pname
22486d7f5d3SJohn Marinop (char *)curproc->p_comm
22586d7f5d3SJohn Marinoend
22686d7f5d3SJohn Marinodocument pname
22786d7f5d3SJohn MarinoPrint the command name of the current process
22886d7f5d3SJohn Marinoend
22986d7f5d3SJohn Marinodefine bpp
23086d7f5d3SJohn Marinoset $bp = (struct buf *) $arg0
23186d7f5d3SJohn Marino    if $bp->b_dev
23286d7f5d3SJohn Marino      printf "  Buffer at 0x%x: dev 0x%x:0x%x  data 0x%x  bcount 0x%x  doffset 0x%llx resid 0x%x\n", \
23386d7f5d3SJohn Marino        $bp, \
23486d7f5d3SJohn Marino        $bp->b_dev->si_umajor, \
23586d7f5d3SJohn Marino        $bp->b_dev->si_uminor, \
23686d7f5d3SJohn Marino        $bp->b_data, \
23786d7f5d3SJohn Marino        $bp->b_bcount, \
23886d7f5d3SJohn Marino        $bp->b_bio_array[1].bio_offset, \
23986d7f5d3SJohn Marino        $bp->b_resid
24086d7f5d3SJohn Marino    else
24186d7f5d3SJohn Marino      printf "  Buffer at 0x%x: dev (none) data 0x%x  bcount 0x%x  doffset 0x%llx resid 0x%x\n", \
24286d7f5d3SJohn Marino        $bp, \
24386d7f5d3SJohn Marino        $bp->b_data, \
24486d7f5d3SJohn Marino        $bp->b_bcount, \
24586d7f5d3SJohn Marino        $bp->b_bio_array[1].bio_offset, \
24686d7f5d3SJohn Marino        $bp->b_resid
24786d7f5d3SJohn Marino    end
24886d7f5d3SJohn Marino    printf "   flags 0x%x: ", $bp->b_flags
24986d7f5d3SJohn Marino      if $bp->b_flags & 0x10
25086d7f5d3SJohn Marino        printf "busy "
25186d7f5d3SJohn Marino      end
25286d7f5d3SJohn Marino      if $bp->b_flags & 0x40
25386d7f5d3SJohn Marino        printf "call "
25486d7f5d3SJohn Marino      end
25586d7f5d3SJohn Marino      if $bp->b_flags & 0x200
25686d7f5d3SJohn Marino        printf "done "
25786d7f5d3SJohn Marino      end
25886d7f5d3SJohn Marino      if $bp->b_flags & 0x800
25986d7f5d3SJohn Marino        printf "error "
26086d7f5d3SJohn Marino      end
26186d7f5d3SJohn Marino      if $bp->b_flags & 0x40000
26286d7f5d3SJohn Marino        printf "phys "
26386d7f5d3SJohn Marino      end
26486d7f5d3SJohn Marino      if $bp->b_flags & 0x100000
26586d7f5d3SJohn Marino        printf "read "
26686d7f5d3SJohn Marino      end
26786d7f5d3SJohn Marino    printf "\n"
26886d7f5d3SJohn Marinoend
26986d7f5d3SJohn Marinodefine bpl
27086d7f5d3SJohn Marinoset $bp = (struct buf *) $arg0
27186d7f5d3SJohn Marinoprintf "b_proc: "
27286d7f5d3SJohn Marinooutput $bp->b_proc
27386d7f5d3SJohn Marinoprintf "\nb_flags:      "
27486d7f5d3SJohn Marinooutput $bp->b_flags
27586d7f5d3SJohn Marinoprintf "\nb_qindex:     "
27686d7f5d3SJohn Marinooutput $bp->b_qindex
27786d7f5d3SJohn Marinoprintf "\nb_usecount:   "
27886d7f5d3SJohn Marinooutput $bp->b_usecount
27986d7f5d3SJohn Marinoprintf "\nb_error:      "
28086d7f5d3SJohn Marinooutput $bp->b_error
28186d7f5d3SJohn Marinoprintf "\nb_bufsize:    "
28286d7f5d3SJohn Marinooutput $bp->b_bufsize
28386d7f5d3SJohn Marinoprintf "\nb_bcount:     "
28486d7f5d3SJohn Marinooutput $bp->b_bcount
28586d7f5d3SJohn Marinoprintf "\nb_resid:      "
28686d7f5d3SJohn Marinooutput $bp->b_resid
28786d7f5d3SJohn Marinoprintf "\nb_dev:        "
28886d7f5d3SJohn Marinooutput $bp->b_dev
28986d7f5d3SJohn Marinoprintf "\nb_data:       "
29086d7f5d3SJohn Marinooutput $bp->b_data
29186d7f5d3SJohn Marinoprintf "\nb_kvasize:    "
29286d7f5d3SJohn Marinooutput $bp->b_kvasize
29386d7f5d3SJohn Marinoprintf "\nb_loffset:     "
29486d7f5d3SJohn Marinooutput $bp->b_bio_array[0].bio_offset
29586d7f5d3SJohn Marinoprintf "\nb_doffset:      "
29686d7f5d3SJohn Marinooutput $bp->b_bio_array[1].bio_offset
29786d7f5d3SJohn Marinoprintf "\nb_iodone:     "
29886d7f5d3SJohn Marinooutput $bp->b_bio->bio_done
29986d7f5d3SJohn Marinoprintf "\nb_vp: "
30086d7f5d3SJohn Marinooutput $bp->b_vp
30186d7f5d3SJohn Marinoprintf "\nb_dirtyoff:   "
30286d7f5d3SJohn Marinooutput $bp->b_dirtyoff
30386d7f5d3SJohn Marinoprintf "\nb_dirtyend:   "
30486d7f5d3SJohn Marinooutput $bp->b_dirtyend
30586d7f5d3SJohn Marinoprintf "\nb_generation: "
30686d7f5d3SJohn Marinooutput $bp->b_generation
30786d7f5d3SJohn Marinoprintf "\nb_validoff:   "
30886d7f5d3SJohn Marinooutput $bp->b_validoff
30986d7f5d3SJohn Marinoprintf "\nb_validend:   "
31086d7f5d3SJohn Marinooutput $bp->b_validend
31186d7f5d3SJohn Marinoprintf "\nb_poffset:     "
31286d7f5d3SJohn Marinooutput $bp->b_bio_array[2].bio_offset
31386d7f5d3SJohn Marinoprintf "\nb_savekva:    "
31486d7f5d3SJohn Marinooutput $bp->b_savekva
31586d7f5d3SJohn Marinoprintf "\nb_driver1:    "
31686d7f5d3SJohn Marinooutput $bp->b_driver1
31786d7f5d3SJohn Marinoprintf "\nb_driver2:    "
31886d7f5d3SJohn Marinooutput $bp->b_driver2
31986d7f5d3SJohn Marinoprintf "\nb_spc:        "
32086d7f5d3SJohn Marinooutput $bp->b_spc
32186d7f5d3SJohn Marinoprintf "\nb_npages:     "
32286d7f5d3SJohn Marinooutput $bp->b_npages
32386d7f5d3SJohn Marinoprintf "\n"
32486d7f5d3SJohn Marinoend
32586d7f5d3SJohn Marinodefine bp
32686d7f5d3SJohn Marinobpp bp
32786d7f5d3SJohn Marinoend
32886d7f5d3SJohn Marinodefine bpd
32986d7f5d3SJohn Marino    printf "Buffer data:\n%s", (char *) bp->b_data
33086d7f5d3SJohn Marinoend
33186d7f5d3SJohn Marinodocument bpd
33286d7f5d3SJohn MarinoShow the contents (char*) of bp->data in the current frame.
33386d7f5d3SJohn Marinoend
33486d7f5d3SJohn Marinodocument bp
33586d7f5d3SJohn MarinoShow information about the buffer header pointed to by the
33686d7f5d3SJohn Marinovariable bp in the current frame.
33786d7f5d3SJohn Marinoend
33886d7f5d3SJohn Marinodocument bpp
33986d7f5d3SJohn MarinoShow summary information about the buffer header (struct bp) pointed
34086d7f5d3SJohn Marinoat by the parameter.
34186d7f5d3SJohn Marinoend
34286d7f5d3SJohn Marinodocument bpl
34386d7f5d3SJohn MarinoShow detailled information about the buffer header (struct bp) pointed
34486d7f5d3SJohn Marinoat by the parameter.
34586d7f5d3SJohn Marinoend
34686d7f5d3SJohn Marinodocument bpl
34786d7f5d3SJohn MarinoShow detailled information about the buffer header (struct bp) pointed
34886d7f5d3SJohn Marinoat by the local variable bp.
34986d7f5d3SJohn Marinoend
35086d7f5d3SJohn Marinodefine bx
35186d7f5d3SJohn Marinoprintf "\n b_vnbufs "
35286d7f5d3SJohn Marinooutput/x bp->b_vnbufs
35386d7f5d3SJohn Marinoprintf "\n b_freelist "
35486d7f5d3SJohn Marinooutput/x bp->b_freelist
35586d7f5d3SJohn Marinoprintf "\n b_act "
35686d7f5d3SJohn Marinooutput/x bp->b_act
35786d7f5d3SJohn Marinoprintf "\n b_flags "
35886d7f5d3SJohn Marinooutput/x bp->b_flags
35986d7f5d3SJohn Marinoprintf "\n b_qindex "
36086d7f5d3SJohn Marinooutput/x bp->b_qindex
36186d7f5d3SJohn Marinoprintf "\n b_usecount "
36286d7f5d3SJohn Marinooutput/x bp->b_usecount
36386d7f5d3SJohn Marinoprintf "\n b_error "
36486d7f5d3SJohn Marinooutput/x bp->b_error
36586d7f5d3SJohn Marinoprintf "\n b_bufsize "
36686d7f5d3SJohn Marinooutput/x bp->b_bufsize
36786d7f5d3SJohn Marinoprintf "\n b_bcount "
36886d7f5d3SJohn Marinooutput/x bp->b_bcount
36986d7f5d3SJohn Marinoprintf "\n b_resid "
37086d7f5d3SJohn Marinooutput/x bp->b_resid
37186d7f5d3SJohn Marinoprintf "\n b_dev "
37286d7f5d3SJohn Marinooutput/x bp->b_dev
37386d7f5d3SJohn Marinoprintf "\n b_data "
37486d7f5d3SJohn Marinooutput/x bp->b_data
37586d7f5d3SJohn Marinoprintf "\n b_kvasize "
37686d7f5d3SJohn Marinooutput/x bp->b_kvasize
37786d7f5d3SJohn Marinoprintf "\n b_doffset "
37886d7f5d3SJohn Marinooutput/x bp->b_bio_array[1].bio_offset
37986d7f5d3SJohn Marinoprintf "\n b_vp "
38086d7f5d3SJohn Marinooutput/x bp->b_vp
38186d7f5d3SJohn Marinoprintf "\n b_dirtyoff "
38286d7f5d3SJohn Marinooutput/x bp->b_dirtyoff
38386d7f5d3SJohn Marinoprintf "\n b_validoff "
38486d7f5d3SJohn Marinooutput/x bp->b_validoff
38586d7f5d3SJohn Marinoecho \n
38686d7f5d3SJohn Marinoend
38786d7f5d3SJohn Marinodefine ddb
38886d7f5d3SJohn Marinoset boothowto=0x80000000
38986d7f5d3SJohn Marinos
39086d7f5d3SJohn Marinoend
39186d7f5d3SJohn Marinodocument ddb
39286d7f5d3SJohn MarinoSwitch back to ddb.
39386d7f5d3SJohn Marinoend
39486d7f5d3SJohn Marinodefine ps
39586d7f5d3SJohn Marino    set $nproc = nprocs
39686d7f5d3SJohn Marino    set $aproc = allproc.lh_first
39786d7f5d3SJohn Marino    set $proc = allproc.lh_first
39886d7f5d3SJohn Marino    printf "  pid    proc    uid  ppid  pgrp   flag stat comm         wchan\n"
39986d7f5d3SJohn Marino    while (--$nproc >= 0)
40086d7f5d3SJohn Marino        set $pptr = $proc.p_pptr
40186d7f5d3SJohn Marino        if ($pptr == 0)
40286d7f5d3SJohn Marino           set $pptr = $proc
40386d7f5d3SJohn Marino        end
40486d7f5d3SJohn Marino        if ($proc.p_stat)
40586d7f5d3SJohn Marino            printf "%5d %08x %4d %5d %5d  %06x  %d  %-10s   ", \
40686d7f5d3SJohn Marino                   $proc.p_pid, $aproc, \
40786d7f5d3SJohn Marino                   $proc.p_cred->p_ruid, $pptr->p_pid, \
40886d7f5d3SJohn Marino                   $proc.p_pgrp->pg_id, $proc.p_flags, $proc.p_stat, \
40986d7f5d3SJohn Marino                   &$proc.p_comm[0]
41086d7f5d3SJohn Marino            if ($proc.p_wchan)
41186d7f5d3SJohn Marino                if ($proc.p_wmesg)
41286d7f5d3SJohn Marino                    printf "%s ", $proc.p_wmesg
41386d7f5d3SJohn Marino                end
41486d7f5d3SJohn Marino                printf "%x", $proc.p_wchan
41586d7f5d3SJohn Marino            end
41686d7f5d3SJohn Marino            printf "\n"
41786d7f5d3SJohn Marino        end
41886d7f5d3SJohn Marino        set $aproc = $proc.p_list.le_next
41986d7f5d3SJohn Marino        if ($aproc == 0 && $nproc > 0)
42086d7f5d3SJohn Marino            set $aproc = zombproc
42186d7f5d3SJohn Marino        end
42286d7f5d3SJohn Marino        set $proc = $aproc
42386d7f5d3SJohn Marino    end
42486d7f5d3SJohn Marinoend
42586d7f5d3SJohn Marinodocument ps
42686d7f5d3SJohn Marino"ps" -- when kernel debugging, type out a ps-like listing of active processes.
42786d7f5d3SJohn Marinoend
42886d7f5d3SJohn Marinodefine pcb
42986d7f5d3SJohn Marino    set $nproc = nprocs
43086d7f5d3SJohn Marino    set $aproc = allproc.lh_first
43186d7f5d3SJohn Marino    set $proc = allproc.lh_first
43286d7f5d3SJohn Marino    while (--$nproc >= 0)
43386d7f5d3SJohn Marino        set $pptr = $proc.p_pptr
43486d7f5d3SJohn Marino        if ($proc->p_pid == $arg0)
43586d7f5d3SJohn Marino	   set $pcba = $pptr->p_addr->u_pcb
43686d7f5d3SJohn Marino	   printf "ip: %08x sp: %08x bp: %08x bx: %08x\n", $pcba->pcb_eip, $pcba->pcb_esp, $pcba->pcb_ebp, $pcba->pcb_ebx
43786d7f5d3SJohn Marino	   x/1i $pcba->pcb_eip
43886d7f5d3SJohn Marino	   set $nproc = 0
43986d7f5d3SJohn Marino        end
44086d7f5d3SJohn Marino        set $aproc = $proc.p_list.le_next
44186d7f5d3SJohn Marino        if ($aproc == 0 && $nproc > 0)
44286d7f5d3SJohn Marino            set $aproc = zombproc
44386d7f5d3SJohn Marino        end
44486d7f5d3SJohn Marino        set $proc = $aproc
44586d7f5d3SJohn Marino    end
44686d7f5d3SJohn Marinoend
44786d7f5d3SJohn Marinodocument pcb
44886d7f5d3SJohn MarinoShow some pcb contents of process whose pid is specified.
44986d7f5d3SJohn Marinoend
45086d7f5d3SJohn Marinodefine btr
45186d7f5d3SJohn Marinoset $frame = $arg0
45286d7f5d3SJohn Marinoset $fno = 0
45386d7f5d3SJohn Marinowhile (*(int *) $frame > 0xc0000000)
45486d7f5d3SJohn Marino  set $myebp = *(int *) $frame
45586d7f5d3SJohn Marino  set $myeip = *(int *) ($frame + 4)
45686d7f5d3SJohn Marino  printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
45786d7f5d3SJohn Marino  x/1i $myeip
45886d7f5d3SJohn Marino  set $frame = $myebp
45986d7f5d3SJohn Marino  set $fno = $fno + 1
46086d7f5d3SJohn Marinoend
46186d7f5d3SJohn Marinoend
46286d7f5d3SJohn Marinodocument btr
46386d7f5d3SJohn MarinoShow a backtrace from the ebp address specified.  This can be used to
46486d7f5d3SJohn Marinoget a backtrace from any stack resident in memory.
46586d7f5d3SJohn Marinoend
46686d7f5d3SJohn Marinodefine btp
46786d7f5d3SJohn Marino    set $nproc = nprocs
46886d7f5d3SJohn Marino    set $aproc = allproc.lh_first
46986d7f5d3SJohn Marino    set $proc = allproc.lh_first
47086d7f5d3SJohn Marino    while (--$nproc >= 0)
47186d7f5d3SJohn Marino        if ($proc->p_pid == $arg0)
47286d7f5d3SJohn Marino	   btr $proc->p_addr->u_pcb->pcb_ebp
47386d7f5d3SJohn Marino	   set $nproc = 0
47486d7f5d3SJohn Marino	else
47586d7f5d3SJohn Marino           set $aproc = $proc.p_list.le_next
47686d7f5d3SJohn Marino           if ($aproc == 0 && $nproc > 0)
47786d7f5d3SJohn Marino              set $aproc = zombproc
47886d7f5d3SJohn Marino           end
47986d7f5d3SJohn Marino           set $proc = $aproc
48086d7f5d3SJohn Marino        end
48186d7f5d3SJohn Marino   end
48286d7f5d3SJohn Marinoend
48386d7f5d3SJohn Marinodocument btp
48486d7f5d3SJohn MarinoShow a backtrace for the process whose pid is specified as a parameter.
48586d7f5d3SJohn Marinoend
48686d7f5d3SJohn Marinodefine btpa
48786d7f5d3SJohn Marino    set $nproc = nprocs
48886d7f5d3SJohn Marino    set $aproc = allproc.lh_first
48986d7f5d3SJohn Marino    set $proc = allproc.lh_first
49086d7f5d3SJohn Marino    printf "  pid    proc    uid  ppid  pgrp   flag stat comm         wchan\n"
49186d7f5d3SJohn Marino    while (--$nproc >= 0)
49286d7f5d3SJohn Marino        set $pptr = $proc.p_pptr
49386d7f5d3SJohn Marino        if ($pptr == 0)
49486d7f5d3SJohn Marino           set $pptr = $proc
49586d7f5d3SJohn Marino        end
49686d7f5d3SJohn Marino        if ($proc.p_stat)
49786d7f5d3SJohn Marino            printf "%5d %08x %4d %5d %5d  %06x %d  %-10s   ", \
49886d7f5d3SJohn Marino                   $proc.p_pid, $aproc, \
49986d7f5d3SJohn Marino                   $proc.p_cred->p_ruid, $pptr->p_pid, \
50086d7f5d3SJohn Marino                   $proc.p_pgrp->pg_id, $proc.p_flags, $proc.p_stat, \
50186d7f5d3SJohn Marino                   &$proc.p_comm[0]
50286d7f5d3SJohn Marino            if ($proc.p_wchan)
50386d7f5d3SJohn Marino                if ($proc.p_wmesg)
50486d7f5d3SJohn Marino                    printf "%s ", $proc.p_wmesg
50586d7f5d3SJohn Marino                end
50686d7f5d3SJohn Marino                printf "%x", $proc.p_wchan
50786d7f5d3SJohn Marino            end
50886d7f5d3SJohn Marino            printf "\n"
50986d7f5d3SJohn Marino	   if ($proc->p_flags & 4)
51086d7f5d3SJohn Marino	      btr $proc->p_addr->u_pcb->pcb_ebp
51186d7f5d3SJohn Marino	   else
51286d7f5d3SJohn Marino              echo (not loaded)\n
51386d7f5d3SJohn Marino	   end
51486d7f5d3SJohn Marino        end
51586d7f5d3SJohn Marino        set $aproc = $proc.p_list.le_next
51686d7f5d3SJohn Marino        if ($aproc == 0 && $nproc > 0)
51786d7f5d3SJohn Marino            set $aproc = zombproc
51886d7f5d3SJohn Marino        end
51986d7f5d3SJohn Marino        set $proc = $aproc
52086d7f5d3SJohn Marino    end
52186d7f5d3SJohn Marinoend
52286d7f5d3SJohn Marinodocument btpa
52386d7f5d3SJohn MarinoShow backtraces for all processes in the system.
52486d7f5d3SJohn Marinoend
52586d7f5d3SJohn Marinodefine btpp
52686d7f5d3SJohn Marino  if ($myvectorproc->p_flags & 4)
52786d7f5d3SJohn Marino    btr $myvectorproc->p_addr->u_pcb->pcb_ebp
52886d7f5d3SJohn Marino  else
52986d7f5d3SJohn Marino    echo (not loaded)\n
53086d7f5d3SJohn Marino  end
53186d7f5d3SJohn Marinoend
53286d7f5d3SJohn Marinodocument btpp
53386d7f5d3SJohn MarinoShow a backtrace for the process previously selected with 'defproc'.
53486d7f5d3SJohn Marinoend
53586d7f5d3SJohn Marinodefine defproc
53686d7f5d3SJohn Marino    set $nproc = nprocs
53786d7f5d3SJohn Marino    set $aproc = allproc.lh_first
53886d7f5d3SJohn Marino    set $proc = allproc.lh_first
53986d7f5d3SJohn Marino    while (--$nproc >= 0)
54086d7f5d3SJohn Marino        if ($proc->p_pid == $arg0)
54186d7f5d3SJohn Marino	   set $pptr = $proc.p_pptr
54286d7f5d3SJohn Marino           if ($pptr == 0)
54386d7f5d3SJohn Marino              set $pptr = $proc
54486d7f5d3SJohn Marino           end
54586d7f5d3SJohn Marino	   set $myvectorproc = $proc
54686d7f5d3SJohn Marino           if ($proc.p_stat)
54786d7f5d3SJohn Marino               printf "%5d %08x %4d %5d %5d  %06x %d  %-10s   ", \
54886d7f5d3SJohn Marino                      $proc.p_pid, $aproc, \
54986d7f5d3SJohn Marino                      $proc.p_cred->p_ruid, $pptr->p_pid, \
55086d7f5d3SJohn Marino                     $proc.p_pgrp->pg_id, $proc.p_flags, $proc.p_stat, \
55186d7f5d3SJohn Marino                     &$proc.p_comm[0]
55286d7f5d3SJohn Marino               if ($proc.p_wchan)
55386d7f5d3SJohn Marino                   if ($proc.p_wmesg)
55486d7f5d3SJohn Marino                       printf "%s ", $proc.p_wmesg
55586d7f5d3SJohn Marino                  end
55686d7f5d3SJohn Marino                  printf "%x", $proc.p_wchan
55786d7f5d3SJohn Marino               end
55886d7f5d3SJohn Marino               printf "\n"
55986d7f5d3SJohn Marino	      end
56086d7f5d3SJohn Marino	   btpp
56186d7f5d3SJohn Marino	   set $nproc = 0
56286d7f5d3SJohn Marino	else
56386d7f5d3SJohn Marino           set $proc = $proc.p_list.le_next
56486d7f5d3SJohn Marino        end
56586d7f5d3SJohn Marino   end
56686d7f5d3SJohn Marinoend
56786d7f5d3SJohn Marinodocument defproc
56886d7f5d3SJohn MarinoSpecify a process for btpp and fr commands.
56986d7f5d3SJohn Marinoend
57086d7f5d3SJohn Marinodefine fr
57186d7f5d3SJohn Marinoset $fno = 0
57286d7f5d3SJohn Marinoset $searching = 1
57386d7f5d3SJohn Marinoif ($myvectorproc->p_flags & 4)
57486d7f5d3SJohn Marino  set $frame = $myvectorproc->p_addr->u_pcb->pcb_ebp
57586d7f5d3SJohn Marino  while (($searching == 1) && (*(int *) $frame > 0xc0000000))
57686d7f5d3SJohn Marino    set $myebp = *(int *) $frame
57786d7f5d3SJohn Marino    set $myeip = *(int *) ($frame + 4)
57886d7f5d3SJohn Marino    if ($fno == $arg0)
57986d7f5d3SJohn Marino      printf " frame %d at %p: ebp %8x, eip ", $fno, $frame, $myebp
58086d7f5d3SJohn Marino      x/1i $myeip
58186d7f5d3SJohn Marino      printf "Called from %8x, stack frame at %8x\n", *(int *) ($myebp+4), *(int *) $myebp
58286d7f5d3SJohn Marino      printf "last 20 local variables:\n"
58386d7f5d3SJohn Marino      x/20x ($myebp-80)
58486d7f5d3SJohn Marino      printf "call parameters:\n"
58586d7f5d3SJohn Marino      x/8x ($myebp+8)
58686d7f5d3SJohn Marino      set $searching = 0
58786d7f5d3SJohn Marino    else
58886d7f5d3SJohn Marino      set $frame = $myebp
58986d7f5d3SJohn Marino      set $fno = $fno + 1
59086d7f5d3SJohn Marino    end
59186d7f5d3SJohn Marino  end
59286d7f5d3SJohn Marino  if ($searching == 1)
59386d7f5d3SJohn Marino    echo frame not found\n
59486d7f5d3SJohn Marino  end
59586d7f5d3SJohn Marinoelse
59686d7f5d3SJohn Marino  printf "process %d is not loaded in memory\n", $myvectorproc->p_pid
59786d7f5d3SJohn Marinoend
59886d7f5d3SJohn Marinoend
59986d7f5d3SJohn Marinodocument fr
60086d7f5d3SJohn MarinoShow the frame of the stack of the process previously selected with 'defproc'.
60186d7f5d3SJohn Marinoend
60286d7f5d3SJohn Marinoset height 70
60386d7f5d3SJohn Marinoset width 120
60486d7f5d3SJohn Marinodefine vdev
60586d7f5d3SJohn Marinoif (vp->v_type == VBLK)
60686d7f5d3SJohn Marino  p *vp->v_un.vu_cdev.vu_cdevinfo
60786d7f5d3SJohn Marino  printf "numoutput: %d\n", vp->v_numoutput
60886d7f5d3SJohn Marinoelse
60986d7f5d3SJohn Marino  echo "Not a block device"
61086d7f5d3SJohn Marinoend
61186d7f5d3SJohn Marinoend
61286d7f5d3SJohn Marinodocument vdev
61386d7f5d3SJohn MarinoShow some information of the vnode pointed to by the local variable vp.
61486d7f5d3SJohn Marinoend
61586d7f5d3SJohn Marinodefine y
61686d7f5d3SJohn Marinoecho Check your .gdbinit, it contains a y command\n
61786d7f5d3SJohn Marinoend
61886d7f5d3SJohn Marinodefine kldstat
61986d7f5d3SJohn Marino   set $file = files.tqh_first
62086d7f5d3SJohn Marino   printf "Id Refs Address    Size     Name\n"
62186d7f5d3SJohn Marino   while ($file != 0)
62286d7f5d3SJohn Marino     printf "%2d %4d 0x%8x %8x %s\n",   \
62386d7f5d3SJohn Marino	$file->id, 			\
62486d7f5d3SJohn Marino	$file->refs,			\
62586d7f5d3SJohn Marino	$file->address,			\
62686d7f5d3SJohn Marino	$file->size,			\
62786d7f5d3SJohn Marino	$file->filename
62886d7f5d3SJohn Marino     set $file = $file->link.tqe_next
62986d7f5d3SJohn Marino   end
63086d7f5d3SJohn Marinoend
63186d7f5d3SJohn Marinodocument kldstat
63286d7f5d3SJohn MarinoEquivalent of the kldstat(9) command, without options.
63386d7f5d3SJohn Marinoend
63486d7f5d3SJohn Marinodefine msgbuf
63586d7f5d3SJohn Marinoprintf "%s", msgbufp->msg_ptr
63686d7f5d3SJohn Marinoend
63786d7f5d3SJohn Marinodocument msgbuf
63886d7f5d3SJohn MarinoPrint 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.
63986d7f5d3SJohn Marinoend
640