dcmds
> $? %g0 = 0x0000000000000000 %l0 = 0x000000000183f800 page_retire_kstat+0x1d0 %g1 = 0x0000000000000000 %l1 = 0x0000000001931800 kmem_bigtsb_default_arena+0x1e0 %g2 = 0x0000000000000000 %l2 = 0x0000000000000000 %g3 = 0x0000000000000000 %l3 = 0x00000300062c1e38 %g4 = 0x0000000000000000 %l4 = 0x000000000198e400 kvps+0x328 %g5 = 0x0000000000000000 %l5 = 0x0000000000000001 %g6 = 0x0000000000000000 %l6 = 0x000000000183f800 page_retire_kstat+0x1d0 %g7 = 0x0000000000000000 %l7 = 0x0000000001931800 kmem_bigtsb_default_arena+0x1e0 %o0 = 0x0000000000000000 %i0 = 0x000000000000000f %o1 = 0x0000000000000000 %i1 = 0x0000030008eb0000 %o2 = 0x0000000000000000 %i2 = 0x000002a101299c60 %o3 = 0x0000000000000000 %i3 = 0x0000030016eb1290 %o4 = 0x0000000000000000 %i4 = 0x0000000000000001 %o5 = 0x0000000000000000 %i5 = 0x000000000183f800 page_retire_kstat+0x1d0 %o6 = 0x0000000001912b81 panic_stack+0x35a1 %i6 = 0x0000000001912c91 panic_stack+0x36b1 %o7 = 0x0000000000000000 %i7 = 0x0000000001056598 vpanic+0xcc %ccr = 0x00 xcc=nzvc icc=nzvc %fprs = 0x00 fef=0 du=0 dl=0 %asi = 0x00 %y = 0x0000000000000000 %pc = 0x000000000107e694 panicsys+0x48 %npc = 0x0000000000000000 %sp = 0x0000000001912b81 unbiased=0x0000000001913380 %fp = 0x0000000001912c91 %tick = 0x0000af41ea658a08 %tba = 0x0000000000000000 %tt = 0x0 %tl = 0x0 %pil = 0xf %pstate = 0x000 cle=0 tle=0 mm=TSO red=0 pef=0 am=0 priv=0 ie=0 ag=0 %cwp = 0x00 %cansave = 0x00 %canrestore = 0x00 %otherwin = 0x00 %wstate = 0x00 %cleanwin = 0x0
$C [ count ]
> $C 0000000001912b81 panicsys+0x48(f, 30008eb0000, 2a101299c60, 30016eb1290, 1, 183f800) 0000000001912c91 vpanic+0xcc(10d4ce8, 2a1012993d8, 10d4c00, 2a101299c60, 1, 183f800) 000002a101298aa1 panic+0x1c(10d4ce8, 193a000, 0, c0, 2a101299400, 1) 000002a101298b51 sync_handler+0x138(30008eb0000, 0, 10d4c00, 2a101299c60, 1, 183f800) 000002a101298c21 vx_handler+0x94(2a101299580, 73, 19d7000, 1, 18482f8, 18481f0) 000002a101298cd1 promif_enter_mon+0xa8(183d000, c, 10da1e8, 10d9e40, 183d000, 10da000) 000002a101298d91 kern_cif_handler+0x24(2a1012997a8, 0, 10dae58, 1, 183d400, 104efd0) 000002a101298e41 client_handler+0x2c(104e63c, 2a1012997a8, 0, 18a7218, 1919000, 104e63c) 000002a101298ef1 prom_enter_mon+0x24(0, 0, 18ef000, 1, 183d400, 10dae58) 000002a101298fc1 debug_enter+0x10c(a, a, 1, 193f800, 183a400, 0) 000002a101299091 abort_seq_softintr+0xfc(0, 0, 183a400, 2a101299d40, 2, 1) 000002a101299251 intr_thread+0x258(16, 0, 1000000000000, 101010101010101, 1000000000000, 12) 000002a1012690f1 cpu_halt+0x104(1913b90, 1, 1913b90, 1913a58, 6, 30008eb0000) 000002a1012691a1 idle+0x120(183ec00, 7, 30008eb0000, 30008d65364, 183ed70, ffffffffffffffff) 000002a101269251 thread_start+4(0, 0, 0, 0, 0, 0
[ base ] $d
> ::class SLOT NAME INIT FCN CLASS FCN 0 SYS sys_init sys_classfuncs 1 TS ts_init ts_classfuncs 2 SDC sysdc_init sysdc_classfuncs 3 FX fx_init fx_classfuncs 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0
$e
> $e _fini(7bb9a014): 1b1c031a8210000f _info(7bb9a028): 1b1c031a92100008 _init(7bb9a000): 1b1c031a8210000f pm_stop_pm_walk(7bb9a508): 9de3bf50f65e20f8 pc_info(7bb9a370): 191c031ada5b22c0 pm_start_pm_walk(7bb9a3f8): 9de3bf50f85e20f8 _fini(7b32e234): 9de3bf503b1c01aa _info(7b32e260): 1b1c01aa92100008 _init(7b32e100): 9de3bf303b1c01aa iptun_ioc_fini(7b32e4c4): 1b0000118210000f iptun_ioc_init(7b32e4a4): 1b0000118210000f iptun_delete(7b330370): 9de3bf4091362000 iptun_create(7b32ffc4): 9de3bf20c077a7f7 iptun_modify(7b330510): 9de3bf40d0062000 iptun_taskq(70001fb8): 3001c437928 iptun_cache(70001fc0): 3001c4de008 : :
$M
> $M MACRO NATIVE EQUIVALENT bufctl ::bufctl bufctl_audit ::bufctl -v cpu ::cpuinfo -v cpun ::cpuinfo -v cpus ::walk cpu |::cpuinfo -v devinfo ::print struct dev_info devinfo.minor ::minornodes devinfo.next ::walk devi_next |::devinfo -s devinfo.parent ::walk devinfo_parents |::devinfo -s devinfo.prop ::devinfo devinfo.sibling ::walk devinfo_siblings |::devinfo -s devinfo_brief ::devinfo -s devinfo_major ::devbindings -s devnames_major ::devnames -m devt ::devt devt2snode ::dev2snode findthreads ::walk thread |::thread major2snode ::major2snode mblk ::mblk -v modctl.brief ::modctl modules ::modinfo mount ::fsinfo msgbuf ::msgbuf mutex ::mutex panicbuf ::panicinfo pid2proc ::pid2proc |::print proc_t proc2u ::print proc_t p_user procargs ::print proc_t p_user.u_psargs queue ::queue -v sema ::print sema_impl_t stackregs ::stackregs stacktrace ::stackregs systemdump 0>pc;0>npc;nopanicdebug/W 1;:c thread ::print kthread_t threadlist ::threadlist -v u ::print user_t utsname utsname::print
$v
> $v i0 = f i1 = 30008eb0000 i2 = 2a101299c60 i3 = 30016eb1290 i4 = 1 i5 = 183f800 i6 = 1912c91 . = 10 i7 = 1056598 0 = 2a10153bc60 tick = af41ea658a08 sp = 1912b81 fp = 1912c91 9 = 1 pil = f l0 = 183f800 l1 = 1931800 l3 = 300062c1e38 l4 = 198e400 l5 = 1 l6 = 183f800 l7 = 1931800 b = 1800000 d = 1a5930 e = 1009070 m = 7f454c46 t = 3098f8 o6 = 1912b81 pc = 107e694
address ::array [type count] [variable]
> 0000030000042008::array kmem_cache_t 5 30000042008 30000042280 300000424f8 30000042770 300000429e8
[ address ] ::dis [-abfw] [-n cnt] [address]
> 0x000000000107e694::dis -n 5 panicsys+0x34: st %o4, [%sp + 0x8bf] panicsys+0x38: ldx [%g7 + 0x18], %o3 panicsys+0x3c: stx %o3, [%sp + 0x8b7] panicsys+0x40: ldub [%g7 + 0x30], %o2 panicsys+0x44: stb %o2, [%sp + 0x8b3] panicsys+0x48: call -0x28840 <setjmp> panicsys+0x4c: add %g7, 0x40, %o0 panicsys+0x50: ld [%sp + 0x8ef], %i0 panicsys+0x54: ldx [%sp + 0x8ff], %i1 panicsys+0x58: ldx [%sp + 0x8f7], %i2 panicsys+0x5c: ld [%i2 + 0x24], %i5
::disasms
> ::disasms 1 - SPARC-v8 disassembler 2 - SPARC-v9 disassembler 4 - UltraSPARC1-v9 disassembler default - default no-op disassembler v8 - SPARC-v8 disassembler v9 - SPARC-v9 disassembler v9plus - UltraSPARC1-v9 disassembler
::dismode [mode]
> ::dismode disassembly mode is v9plus (UltraSPARC1-v9 disassembler)
::dmods [-l] [module-name]
> ::dmods arp cpc crypto dtrace fcip fcp : :
> ::dmods -l ufs ufs dcmd acl - given an inode, display its in core acl's dcmd cg - display a summarized cylinder group structure dcmd inode - display summarized inode_t dcmd inode_cache - search/display inodes from inode cache dcmd mapentry - dumps ufslog mapentry dcmd mapstats - dumps ufslog stats walk acl - given an inode, walk chains of in core acl's walk cg - walk cg's in bio buffer cache walk inode_cache - walk inode cache walk ufslogmap - walk map entries in a ufs_log mt_map
[ address ] ::dump [-eqrstu] [-n count] [-f|-p] [-g bytes] [-w paragraphs]
-e | エンディアン性を調整します。-e オプションを指定すると、4 バイトワードが使用されます。-g オプションを使用すると、デフォルトのワードサイズを変更できます。 | |
-f | ターゲットの仮想アドレス空間からではなく、指定された仮想アドレスに対応するオブジェクトファイルの位置からデータを読み取ります。デバッガが現在、動作中のプロセス、コアファイル、またはクラッシュダンプに接続されていない場合、-f オプションはデフォルトで有効になります。 | |
-g group | バイトをバイトのグループで表示します。デフォルトの group サイズは 4 バイトです。group サイズは行幅を分割する 2 のべき乗にする必要があります。 | |
-p | address を、仮想アドレスではなく、ターゲットのアドレス空間内の物理的なアドレス位置として解釈します。 | |
-q | データの ASCII 形式の復号化を出力しません。 | |
-r | 各行に、絶対的なアドレスではなく、開始アドレスからの相対的な行数を与えます。このオプションを指定すると、-u オプションも暗黙的に指定されます。 | |
-s | 繰り返される行を省略します。 | |
-t | 行全体を読み取って出力するのではなく、指定されたアドレスの内容だけを読み取って表示します。 | |
-u | 段落の境界に配列するのではなく、配列せずに出力します。 | |
-w | paragraphs 行ごとに 16 バイトの段落で段落を表示します。デフォルトの段落数は 1 です。-w の最大値は 16 です。 |
> 2a101299d40,100::dump \/ 1 2 3 4 5 6 7 8 9 a b c d e f v123456789abcdef 2a101299d40: 0000af4d e0600c98 00000000 000002d5 ...M.`.......... 2a101299d50: 00000000 00000000 00000000 00000000 ................ 2a101299d60: 00000000 00000000 00000000 00000000 ................ 2a101299d70: 00000000 00000000 00000000 00000000 ................ 2a101299d80: 00000000 00000000 00000000 00000000 ................ 2a101299d90: 00000000 00000000 00000000 00000000 ................ 2a101299da0: 00000000 00000000 00000000 00000000 ................ 2a101299db0: 00000000 00000000 00000000 00000000 ................ 2a101299dc0: 00000000 018a62c0 00000300 08d59e60 ......b........` 2a101299dd0: 000002a1 012c9c60 000002a1 012a1c60 .....,.`.....*.` 2a101299de0: 00000000 00000000 00000000 00000000 ................ 2a101299df0: 00000000 00000000 00000300 062c1e38 .............,.8 2a101299e00: 00000000 38fe7043 00000000 00000000 ....8.pC........ 2a101299e10: 00000000 00000000 00000000 00000000 ................ 2a101299e20: 00000000 00000000 00000300 08eb00e8 ................ 2a101299e30: 000a0000 00000000 00000300 08d65340 ..............S@
[ address ] ::grep command
> ::walk inode_cache |::grep .==300043fca10 300043fca10
::echo args ...
> ::echo "TEST" TEST
> ::findsym kmem_flags found kmem_flags at dblk_lastfree_reusable+0x18 found kmem_flags at kmem_cache_create+0xdc found kmem_flags at kmem_cache_create+0x104 found kmem_flags at kmem_debugging+4 found kmem_flags at kmem_init+0xc found kmem_flags at kmem_init+0x290 found kmem_flags at kmem_init+0x5a4 found kmem_flags at kmem_init+0x5d8
::formats
> ::formats + - increment dot by the count (variable size) - - decrement dot by the count (variable size) B - hexadecimal int (1 byte) C - character using C character notation (1 byte) D - decimal signed int (4 bytes) E - decimal unsigned long long (8 bytes) F - double (8 bytes) G - octal unsigned long long (8 bytes) H - swap bytes and shorts (4 bytes) I - address and disassembled instruction (variable size) J - hexadecimal long long (8 bytes) K - hexadecimal uintptr_t (8 bytes) : :
[ address ] ::mappings [ name ]
> ::mappings BASE LIMIT SIZE NAME 1000000 1a26000 a26000 ktextseg 1a26000 3000000 15da000 kvalloc 70000000 80000000 10000000 kvseg32 edd00000 f0000000 2300000 kdebugseg 2a100000000 2a180000000 80000000 kpseg 2a750000000 2a7575fa000 75fa000 kmapseg 30000000000 70000000000 40000000000 kvseg 70000000000 70002c6e000 2c6e000 kmem64 ffff810000000000 ffff810100000000 100000000 kpmseg ffff810100000000 ffff81017cf92000 7cf92000 kzioseg
[ address ] ::nm [ -DPdghnopuvx ] [ -t types ] [ -f format ] [ object ]
-D | .symtab の代わりに .dynsym (動的シンボルテーブル) を出力します。 |
-P | .symtab の代わりに専用シンボルテーブルを出力します。 |
-d | 値とサイズフィールドを 10 進数で出力します。 |
-f format [,format...] | 指定されたシンボル情報だけを出力します。有効な書式化引数文字列は次のとおりです。 ndx シンボルテーブルのインデックス val シンボルテーブル size サイズ (バイト) type シンボルの型 bind 結合 oth その他 shndx セクションのインデックス name シンボル名 ctype シンボルの C 言語の型 (既知の場合) obj シンボルを定義するオブジェクト |
-g | 大域シンボルだけを出力します。 |
-h | ヘッダー行を抑制します。 |
-n | 名前順にシンボルをソートします。 |
-o | 値とサイズフィールドを 8 進数で出力します。 |
-p | シンボルを、一連の ::nmadd コマンドとして出力します。このオプションは -P とともに使用して、マクロファイルを作成できます。その後、$< コマンドを用いて、このマクロファイルをデバッガに読み込みます。 |
-t type [,type...] | 指定された型のシンボルだけを出力します。有効な型引数文字列は次のとおりです。 noty STT_NOTYPE objt STT_OBJECT func STT_FUNC sect STT_SECTION file STT_FILE comm STT_COMMON tls STT_TLS regi STT_SPARC_REGISTER |
-u | 未定義のシンボルだけを出力します。 |
-v | 値順にシンボルをソートします。 |
-x | 値とサイズフィールドを 16 進数で出力します。 |
> ::nm Value Size Type Bind Other Shndx Name 0x0000000000000000|0x0000000000000000|NOTY |LOCL |0x0 |UNDEF | 0x000000000183b728|0x0000000000000008|OBJT |LOCL |0x2 |13 |ops 0x000000000183bac8|0x0000000000000008|OBJT |LOCL |0x2 |13 |romp 0x000000000109b738|0x000000000000008c|FUNC |LOCL |0x2 |1 |kobj_lm_append 0x000000000183bb20|0x0000000000000008|OBJT |LOCL |0x2 |13 |_kobj_printf 0x0000000001816e20|0x0000000000000018|OBJT |LOCL |0x2 |10 |primaries 0x000000000183bb30|0x0000000000000008|OBJT |LOCL |0x2 |13 |kobj_bzero 0x000000000183bb38|0x0000000000000008|OBJT |LOCL |0x2 |13 |kobj_bcopy 0x00000000018514c8|0x0000000000000000|OBJT |LOCL |0x0 |13 |_END_ 0x000000000183bb48|0x0000000000000008|OBJT |LOCL |0x2 |13 |dbvec 0x000000000109b358|0x0000000000000020|FUNC |LOCL |0x2 |1 |kobj_kdi_get_polled_io 0x000000000183bfe8|0x0000000000000004|OBJT |LOCL |0x2 |13 |kobj_mmu_pagesize 0x000000000109b700|0x0000000000000038|FUNC |LOCL |0x2 |1 |kobj_lm_lookup : :
[ address ] ::print [-aCdiLptx] [-c lim] [-l lim] [type [ member|offset ... ]]
type 引数の後ろに member 式または offset 式のリストをオプションで指定することができます。その場合は、指定された type のメンバーまたはサブメンバーだけが表示されます。メンバーは、配列インデックス演算子 ([])、構造体メンバー演算子 (->)、および構造体ポインタ演算子 (.) を含む C 構文を使って指定できます。オフセットは、MDB 算術展開の構文 ($[]) を使って指定できます。データ構造体を表示したあと、::print はドットを type のサイズ分 (バイト) だけインクリメントします。
-a | 各メンバーのアドレスが表示されます。 |
-i | 左側の式が即値とみなされ、指定された型を使って表示されます。 |
-p | ::print はアドレスを、仮想メモリーアドレスではなく、物理メモリーアドレスとして解釈します。 |
-t | 各メンバーの型が表示されます。 |
-d | または -x オプションを指定すると、すべての整数は 10 進数 (-d) または 16 進数 (-x) で表示されます。値を 10 進数または 16 進数のどちらで表示するかを決定するとき、デフォルトではヒューリスティックに行います。文字列として読み取りまたは表示される文字配列内の文字数は -c オプションで制限できます。 |
-C | 文字数は制限されません。読み取りまたは表示される標準配列内の要素数は -l オプションで制限できます。 |
-L | 文字数は制限されず、配列内のすべての要素が表示されます。 |
> 0000030000006da0::print -a vmem_t vm_seg0
30000006e48 vm_seg0 = {
30000006e48 vm_seg0.vs_start = 0
30000006e50 vm_seg0.vs_end = 0
30000006e58 vm_seg0.vs_knext = 0x300000227e0
30000006e60 vm_seg0.vs_kprev = 0x30000022c08
30000006e68 vm_seg0.vs_anext = 0x30000006ee0
30000006e70 vm_seg0.vs_aprev = 0x30000022bd0
30000006e78 vm_seg0.vs_type = 0x10
30000006e79 vm_seg0.vs_import = 0
30000006e7a vm_seg0.vs_depth = 0
30000006e80 vm_seg0.vs_thread = 0
30000006e88 vm_seg0.vs_timestamp = 0
30000006e90 vm_seg0.vs_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
}::set [ -wF ] [ +/-o option ] [ -s distance ] [ -I path ] [ -L path ] [ -P prompt ]
-F | その次のユーザープロセスで、::attach が適用されているプロセスを強制的に引き継ぎます (-F オプションをコマンド行に指定して MDB を実行する場合と同じ)。 |
-I | マクロファイルを検出するためのデフォルトパスを設定します。パス引数は特殊トークンを使用できます。 |
-L | デバッガモジュールを検出するためのデフォルトパスを設定します。パス引数は特殊トークンを使用できます。 |
-o | 指定されたデバッガオプションを有効にします。+o 書式が使用されている場合には、そのデバッガオプションを無効にします。 |
-P | コマンドプロンプトを、指定されたプロンプト文字列に設定します。 |
-s | シンボルマッチングディスタンスを指定された距離に設定します。を参照してください。 |
-w | ターゲットを書き込み用にもう一度開きます (-w オプションをコマンド行に指定して mdb を実行する場合と同じ)。 |
> ::set macro path: /usr/platform/SUNW,Sun-Fire-T200/lib/adb/sparcv9 /usr/platform/sun4v/lib/adb/sparcv9 /usr/lib/adb/sparcv9 module path: /usr/platform/SUNW,Sun-Fire-T200/lib/mdb/kvm/sparcv9 /usr/platform/sun4v/lib/mdb/kvm/sparcv9 /usr/lib/mdb/kvm/sparcv9 symbol matching distance: 0 (smart mode) array member print limit: 32 array string print limit: 1024 command prompt: "> " debugger options: follow_exec_mode=ask, follow_fork_modeask, pager, stop_on_bpt_nosym, write_readback target options: read-only
::showrev [ -pv ]
> ::showrev Hostname: t2kh1ldom2 Release: 5.11 Kernel architecture: sun4v Application architecture: sparcv9 Kernel version: SunOS 5.11 sun4v 11.0 Platform: SUNW,Sun-Fire-T200
::sizeof type
> ::sizeof kmem_cache_t sizeof (kmem_cache_t) = 0x278
[ address ] ::stack [ count ]
> ::stack panicsys+0x48(f, 30008eb0000, 2a101299c60, 30016eb1290, 1, 183f800) vpanic+0xcc(10d4ce8, 2a1012993d8, 10d4c00, 2a101299c60, 1, 183f800) panic+0x1c(10d4ce8, 193a000, 0, c0, 2a101299400, 1) sync_handler+0x138(30008eb0000, 0, 10d4c00, 2a101299c60, 1, 183f800) vx_handler+0x94(2a101299580, 73, 19d7000, 1, 18482f8, 18481f0) promif_enter_mon+0xa8(183d000, c, 10da1e8, 10d9e40, 183d000, 10da000) kern_cif_handler+0x24(2a1012997a8, 0, 10dae58, 1, 183d400, 104efd0) client_handler+0x2c(104e63c, 2a1012997a8, 0, 18a7218, 1919000, 104e63c) prom_enter_mon+0x24(0, 0, 18ef000, 1, 183d400, 10dae58) debug_enter+0x10c(a, a, 1, 193f800, 183a400, 0) abort_seq_softintr+0xfc(0, 0, 183a400, 2a101299d40, 2, 1) intr_thread+0x258(16, 0, 1000000000000, 101010101010101, 1000000000000, 12) cpu_halt+0x104(1913b90, 1, 1913b90, 1913a58, 6, 30008eb0000) idle+0x120(183ec00, 7, 30008eb0000, 30008d65364, 183ed70, ffffffffffffffff) thread_start+4(0, 0, 0, 0, 0, 0)
::status
> ::status debugging crash dump vmcore.0 (64-bit) from t2kh1ldom2 operating system: 5.11 11.0 (sun4v) image uuid: 3b516630-e7d2-c451-ba31-d7792ccd9fa2 panic message: sync initiated dump content: kernel pages only
address ::vtop [-a as]
> 000000000180e000::vtop virtual 180e000 mapped to physical 8180e000
[ address ] ::walk walker-name [ variable-name ]
対話処理で使用される場合、 ::walk dcmd は、データ構造体内の各要素のアドレスをデフォルト形式で出力します。また、この dcmd は、パイプラインにアドレスリストを提供するときにも使用できます。walker 名には、「dcmd と walker の名前解決」で説明した逆引用符「`」有効範囲規則を使用できます。オプションの variable-name が指定されている場合には、MDB がパイプラインの次のステージを呼び出すときに walk の各ステップが返す値に、指定変数が割り当てられます。
> ::walk kmem_cache |::print -a kmem_cache_t cache_name 30000042070 cache_name = [ "kmem_magazine_1" ] 3000004c070 cache_name = [ "kmem_magazine_3" ] 30000056070 cache_name = [ "kmem_magazine_7" ] 30000060070 cache_name = [ "kmem_magazine_15" ] 3000006a070 cache_name = [ "kmem_magazine_31" ] 30000074070 cache_name = [ "kmem_magazine_47" ] 30000082070 cache_name = [ "kmem_magazine_63" ] 3000008c070 cache_name = [ "kmem_magazine_95" ] 30000096070 cache_name = [ "kmem_magazine_143" ] 300000a0070 cache_name = [ "kmem_slab_cache" ] 300000aa070 cache_name = [ "kmem_bufctl_cache" ] 300000b4070 cache_name = [ "kmem_bufctl_audit_cache" ] : :
0 件のコメント:
コメントを投稿