|
|
scodb commands
| OSR | UW7 | Command | Description |
|---|---|---|---|
| x | x | alias [word [new_command]] | Set or list command aliases |
| x | x | bc [* | address | DRn | name ] | Clear breakpoint |
| x | x | bl [name] | List breakpoints |
| x | x |
bp [en|dis|mod|name| [rwi] [b|s|l] |x]
addr [condition value ] | Set breakpoints |
| x | x | c|cb|cs|c1 address | Change memory |
| x | x | d|db|ds|dl|dn address | Dump memory |
| x | x | declare|dcl C_declaration | Give a system variable a type |
| x | x | dis|u [exact] [mode [ [-]names...] | address | Disassemble (unassemble) |
| x | editmode|edit|em [emacs|vi] | Change the editing mode | |
| x | -- | info expression | Get low-level information about an expression. |
| x | -- | quitif expression | If (expression), then quit. |
| x | x | r|R [ stack_addr -p pid -p proc_addr | Display system or user registers |
| x | x | s|step -r | Single-step |
| x | x | stack|b|B [ stack_addr -p pid -p proc_addr | Stack backtrace |
| x | x | struct [-> member] [members] addr | Show structure member values |
| x | x | symname|sym address | Find symbol corresponding to an address. |
| x | -- | tfe [depth] | Trace function entry |
| x | x | type expression | Show type of expression |
| x | x | unalias [*|aliases] | Unset alias |
| x | x | undeclare|undcl [*|variables...| | Undeclare system variables |
| x | x | unvar [*|variables...] | Remove debugger variables |
| x | x | var [name initvalue] | Create and list debugger variables |
| x | x | <Del> | Kill line |
| x | x | <Break> | Correct error on current line |
| Function | Description |
|---|---|
| hexdump(addr, mode, len) | dump memory; useful from breakpoint commands |
| dgdt( ) | dump global descriptor table |
| ddt(addr, nentries) | dump descriptor table, nentries long |
| ltop(addr) | convert a linear address to a physical address |
| ptol(addr) | convert a physical address to a linear address |
| patch_call(addr, func) | patch a call instruction to call a new function |
| patch_nop(addr) | patch out an instruction with nops |
| pkill(pid, signal) | send pid a signal |
| ps( ) | show process table similar to ps(CP) or crash(ADM) proc |
| reboot( ) | reboot machine |
| pidtoproc(pid) | return the proc structure for the PID of a process that is displayed in a ps( ) listing |
| dpt(addr) | dump out a page table |
| db_search_pt(addr, pfn) | search a page table for a page frame |
| db_search_region(pfn) | check if a page frame belongs to any region |
| dbtty(n) | switch the debugger between screen (0) and sio (1). |
| eps( ) | similar to ps( ), but shows which processes are running on which processors in a multiprocessor configuration. |
| vuifile(&var, cpuindex) | display per-CPU variables for another CPU on a multiprocessor configuration |
| saveu(N) | save N swapped-out u-areas for stack backtrace |
| regions(pid_or_proc_adr) | display pregion and region info for process |
scodb nomenclature
| Nomenclature | Meaning |
|---|---|
| <num> | Hexadecimal input |
| $<num> | Decimal input |
| 0<num> | Octal input |
| &<symbol> | Address of a symbol and segment type (data or text) |
| $<variable> | Debugger variable |
| %<register> | Access register |
| {list_of_specifiers} | Calculator input line |
| ? | list output modifiers |
| > | no value output |
| b | output value as a byte |
| s | output value as a word |
| 2 | output value in binary |
| o | output value in octal |
| d | output value in decimal |
| : | output string |
scodb registers
| General registers: | |
|---|---|
| eax | function return value |
| ebx | general use |
| ecx | general use, counter |
| edx | general use |
| ebp | stack frame base pointer |
| esp | kernel stack pointer |
| uesp | user process stack pointer |
| esi | general use, source index |
| edi | general use, destination index |
| Segment registers: | |
| cs | code |
| ds | data |
| es | extra data |
| fs | extra data |
| gs | extra data |
| ss | stack |
| Memory management registers: | |
| gdtr | Global Descriptor Table Register |
| ldtr | Local Descriptor Table Register |
| idtr | Interrupt Descriptor Table Register |
| tr | Task register |
| Control registers: | |
| cr0 | system control flags |
| cr1 | unused |
| cr2 | page fault linear address |
| cr3 | page directory base |
| Other registers and pseudo-registers: | |
| eip | location processor is executing code |
| efl | flags |
| trap | system trap number |
| proc | processor running on (for MPX) |
kdb commands (Part 1/3)
| Command | Affect |
|---|---|
| + | compute [TOS-1] + [TOS]; pop 2; push result |
| - | compute [TOS-1] - [TOS]; pop 2; push result |
| * | compute [TOS-1] * [TOS]; pop 2; push result |
| / | compute [TOS-1] / [TOS]; pop 2; push result |
| % | compute [TOS-1] % [TOS]; pop 2; push result |
| >> | compute [TOS-1] >> [TOS]; pop 2; push result |
| << | compute [TOS-1] << [TOS]; pop 2; push result |
| < | compute [TOS-1] < [TOS]; pop 2; push result |
| > | compute [TOS-1] > [TOS]; pop 2; push result |
| == | compute [TOS-1] == [TOS]; pop 2; push result |
| != | compute [TOS-1] != [TOS]; pop 2; push result |
| & | compute [TOS-1] & [TOS]; pop 2; push result |
| | | compute [TOS-1] | [TOS]; pop 2; push result |
| ^ | compute [TOS-1] ^ [TOS]; pop 2; push result |
| && | compute [TOS-1] && [TOS]; pop 2; push result |
| || | compute [TOS-1] || [TOS]; pop 2; push result |
| ! | replace [TOS] with ! [TOS] |
| ++ | replace [TOS] with [TOS] + 1 |
| -- | replace [TOS] with [TOS] - 1 |
| %register | push the contents of the 32-, 16- or 8-bit register. |
| %trap | push the trap number |
| %ipl | push the interrupt priority level |
| = variable | store [TOS] in [variable]; pop 1 |
| :: macro | define [macro] as command string [TOS]; pop 1 |
| ? | print a help message (same as help) |
| ?brk | show current breakpoint settings |
| B |
set breakpoint number [TOS] at address [TOS-1]; pop 2
or set breakpoint number [TOS] at address [TOS-2] with command string [TOS-1]; pop 3 |
| b |
set first free breakpoint address [TOS]; pop 1
or set first free breakpoint at address [TOS-1] with command string [TOS]; pop 2 |
| bn | set breakpoint (like b) and push breakpoint number |
| brkoff | disable breakpoint number [TOS]; pop 1 |
| brkon | re-enable breakpoint number [TOS]; pop 1 |
| brksoff | disable all breakpoints |
| brkson | re-enable all (disabled) breakpoints |
| bs | branch step: execute until a branch is taken |
| bss | branch step through [TOS] branches; pop 1 |
| call |
call the function at address [TOS-1] with [TOS] arguments, given by
[TOS-([TOS]+1)],...[TOS-2]; pop [TOS]+2; push function return value |
| clraddrbrks | clear all breakpoints for address [TOS]; pop 1 |
kdb commands (Part 2/3)
| Command | Affect |
|---|---|
| clrbrk | clear breakpoint number [TOS]; pop 1 |
| clrbrks | clear all breakpoints |
| clrstk | pop all values |
| cmds | print a list of all debugger commands |
| crreg | push the contents of the specified register. reg is 0, 2, 3, 4; for example, cr3. |
| curbrk | push the current breakpoint number, or -1 if not entered from a breakpoint |
| dis | disassemble [TOS] instructions starting at address [TOS-1]; pop 2 |
| dump | show [TOS] bytes starting at virtual address [TOS-1]; pop 2 |
| dup | push [TOS] |
| endif | end scope of then command |
| findsym | print kernel symbol with address closest to [TOS]; pop 1 |
| fdump | show [TOS-1] formatted items at [TOS-2] with format [TOS]; pop 3 |
| help | print a help message |
| ibase | set default input base to [TOS]; pop 1 |
| iinput_base | set default input base. Values for input_base are binary (base 2), decimal (base 10), hex (base 16), octal (base 8). |
| kvtop | convert kernel virtual addr [TOS] to physical |
| lbr | show from- and to- address for last branch taken |
| lint | show from- and to- address for last interrupt or exception |
| lstack | kernel stack trace for LWP [TOS]; pop 1 |
| newterm | switch kdb console I/O to device [TOS-1] unit number [TOS]; pop 2 |
| newdebug | switch to another debugger on next debugger entry |
| nonverbose | turn verbose mode off |
| obase | set output base to [TOS]; pop 1 |
| ooutput_base | Set output base. Values for output_base are decimal (base 10), hex (base 16), octal (base 8). |
| P | print [TOS] in raw form; pop 1 |
| p | print [TOS] |
| PP | print [TOS] values in raw form, from [TOS-[TOS]],...[TOS-1]; pop [TOS]+1 |
| pop | pop 1 value |
| ps | show process information |
| q | exit from the debugger |
| r | replace [TOS] with the value at virtual address [TOS] |
| S | single step 1 instruction (passing calls) |
| s | single step 1 instruction |
| SS | single step [TOS] instructions (passing calls); pop 1 |
| ss | single step [TOS] instructions; pop 1 |
| stack | kernel stack trace for the current process |
| stackargs | set the maximum number of arguments in the stack trace to [TOS]; pop 1 |
| stk | print all values on the stack |
| then | if [TOS] = 0, skip to endif; pop 1 |
kdb commands (Part 3/3)
| Command | Affect |
|---|---|
| trace | set breakpoint number [TOS] trace count to [TOS-1]; pop 2 |
| tstack | ``try'' kernel stack trace from [TOS]; pop 1 |
| uvtop | convert user process number [TOS] address [TOS-1] to physical; pop 1 |
| vars | show values of debugger variables |
| vcall |
call the function at address [TOS-1] with [TOS] arguments,
given by [TOS-([TOS]+1)],...[TOS-2]; pop [TOS]+2 |
| verbose | turn verbose mode on |
| w | write [TOS-1] into virtual address [TOS]; pop 2 |
| w%register | write [TOS] into register; pop 1 |
| w%trap | write [TOS] into the trap number pseudo-register; pop 1 |
kdb command suffixes
| Grouping | Suffix | Meaning |
|---|---|---|
| Operand size | /b | byte |
| /w | word (2 bytes) | |
| /l | long (4 bytes) (default) | |
| /L | long long (8 bytes) | |
| Address space | /k | kernel virtual (default) |
| /p | physical | |
| /io | I/O port | |
| /un | user process number n virtual | |
| /cpun | CPU number n | |
| /cn | CPU number n (same as cpun) | |
| Register set | /rsn | register set number n |
| Breakpoint type | /a | data access breakpoint |
| /m | data modify breakpoint | |
| /i | instruction execution breakpoint (default) |
kdb registers
| 32-bit registers | eax, ebx, ecx, edx, esi, edi, ebp, esp, eip, efl |
| 16-bit registers | cs, ds, es, fs, gs, ax, bx, cx, dx, si, di, bp, sp, ip, fl |
| 8-bit registers | al, ah, bl, bh, cl, ch, dl, dh |
SCODB and KDB registers
| scodb | kdb | General registers (32-bit): | |
|---|---|---|---|
| x | x | eax | function return value |
| x | x | ebx | general use |
| x | x | ecx | general use, counter |
| x | x | edx | general use |
| x | x | ebp | stack frame base pointer |
| x | x | esp | kernel stack pointer |
| x | -- | uesp | user process stack pointer |
| x | x | esi | general use, source index |
| x | ? | edi | general use, destination index |
| -- | x | eip | |
| -- | x | efl | |
| Segment registers (16-bit): | |||
| x | x | cs | code |
| x | x | ds | data |
| x | x | es | extra data |
| x | x | fs | extra data |
| x | x | gs | extra data |
| x | -- | ss | stack |
| -- | x | ax | |
| -- | x | bx | |
| -- | x | cx | |
| -- | x | dx | |
| -- | x | si | |
| -- | x | di | |
| -- | x | bp | |
| -- | x | sp | |
| -- | x | ip | |
| -- | x | fl | |
| 8-bit registers: | |||
| -- | x | al | |
| -- | x | ah | |
| -- | x | bl | |
| -- | x | bh | |
| -- | x | cl | |
| -- | x | ch | |
| -- | x | dl | |
| -- | x | dh | |
| Memory management registers: | |||
| x | ? | gdtr | Global Descriptor Table Register |
| x | ? | ldtr | Local Descriptor Table Register |
| x | ? | idtr | Interrupt Descriptor Table Register |
| x | ? | tr | Task register |
| Control registers: | |||
| x | ? | cr0 | system control flags |
| x | ? | cr1 | unused |
| x | ? | cr2 | page fault linear address |
| x | ? | cr3 | page directory base |
| Other registers and pseudo-registers: | |||
| x | ? | eip | location processor is executing code |
| x | ? | efl | flags |
| x | ? | trap | system trap number |
| x | ? | proc | processor running on (for MPX) |