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