Sveiki,
norėdami įdiegti Solaris 10u9 mdb programėlę susidiekime SUNWmdb ir SUNWmdbr paketus. Visų pirma prijunkime CD.ISO, kas gali būti atlikta tik iš globalios zonos (Jei nenaudojate konteinerių, tai galėjote pabraukto teksto ir neskaityti :)):
lofiadm -a /tmp/software.iso /dev/lofi/1
mount -F hsfs -o ro /dev/lofi/1 /mnt
Pereikim į mum reikiamą aplanką
cd /mnt/Solaris_10/Product
Susimeskim visą tai:
pkgadd -d . SUNWmdb
pkgadd -d . SUNWmdbr
Toliau beliko arba prisijungti (ir sustabdyti) procesą: mdb -p ĖPID
arba atidaryti core/dump failą: mdb core_dump
Na va o daba mdb komandos:
Control Commands |
$< or $<< |
Replace input with a macro or source a macro. |
$> filename or
::log filename |
Log session to a file. If no filename, use default. |
| |
Pipe. Allows simple commands to be joined. |
! |
Shell escape. Acts as a pipe to a shell command. (Not available in kmdb .) |
// |
Comment. Following words on the same line are ignored. |
$M |
Show built-in macros (Kernel debugger only). |
$P string |
Set prompt to string. |
$Q
::quit |
Quit. (From kmdb , use -u option to avoid exiting to ok> prompt.) |
$W |
Re-open target in writable mode. |
$p |
Change target context. |
$w |
Control output page width. |
:A |
Attach to a process or core file. |
:R |
Release attachment. |
:k |
Kill and release targets. |
$v |
Print non-zero variables. |
>
::typeset |
Assign a variable. |
::dcmds |
Print available commands. |
::nm |
Print symbol table. (-P specifies a private symbol table. Manipulated with ::nmadd and ::nmdelete |
::help dcmd |
Provide usage notes on a dcmd. |
::typeset |
Manipulate variable. |
::walk |
Walk data structure. |
::walkers |
List available walkers. |
Input & Output Commands |
$<
$<< |
Replace input with a macro or source a macro. |
$> filename |
Log session to a file. If no filename, use default. |
address/ format-spec
/ format-spec |
Read the value in a memory addressformatted as format-spec. If no address is provided, use dot. |
address/W value |
Write the value in the four bytes starting with address. If no address is provided, usedot. v , w or Z may also be used instead of W to write 1, 2 or 8 bytes, respectively. |
address= format-spec
= format-spec |
Format immediate value of address or dot. |
? |
Read/write primary object file. |
@ format-spec |
Read/write physical address as format-spec. |
\ format-spec |
Read/write physical address as format-spec. |
The difference between /
and =
is subtle. For example, to find the address holding the value of the maxphys
symbol in decimal, we would run:
maxphys=D
To find the value inside the above address, we would use /
like:
maxphys/D
Format Specification |
Note that the ::formats dcmd prints out a full list of supported formats. |
D |
Display in signed decimal. |
i |
Display as a disassembled instruction. |
U |
Display in unsigned decimal. |
X |
Display in signed hexidecimal. |
0t xyz |
Specifies xyz as a decimal value. |
System Examination |
cpu$< cpus |
Display cpu0 . |
cpu n$< cpu |
Display cpu #n. |
$< msgbuf |
Display message buffer, including all console messages up to panic. |
< sp$< stacktrace |
Use the stack pointer address (sp) to display a detailed stack trace. |
$r
::regs |
Display general registers, including program counter and stack pointer. |
::callout |
Print callout table. |
::cpuinfo -v |
Information about activities of CPUs, including runqueue inhabitants. |
::cpuregs
::cpuregs -c cpuid |
Print CPU registers. kmdb only. Can specify a cpu. |
::cpustack
::cpustack -c cpuid |
Print CPU stack. kmdb only. Can specify a cpu. |
::dnlc |
Print DNLC contents. |
::ipcs |
Print SVR4 IPC information. |
::kmalog |
Display kernel memory log and stack traces. |
::kmastat |
Print current kernel memory allocations |
::memstat |
Print current memory usage. |
::nm |
Print symbol table. (-P specifies a private symbol table. Manipulated with ::nmadd and ::nmdelete |
::ps |
List processes with associated threads and lwps |
::ptree |
Print process tree. |
Target Examination |
$? |
Print status and registers. |
$C |
Show call trace and arguments, saved frame pointer and saved program counter for each stack frame. |
$X , $Y , $x , $y and::fpregs |
Display floating point registers. |
$c |
Display stack backtrace. |
$e |
Print list of global symbols. |
$f |
Print list of source files. |
$l |
Print representative thread’s lwp ID. |
$m |
Print address space mappings. |
$r
::regs |
Display general registers, including program counter and stack pointer. |
as::as2proc |
Convert as pointer to a proc_t pointer. |
::devbindings |
devinfo nodes bound to device-name ormajor-num. |
::devinfo |
Detailed devinfo of node. |
::devinfo2driver |
Driver name for this node. |
::devnames |
Print devnames array. |
::devt |
Display dev_t ‘s major & minor numbers. |
::did2thread |
Kernel thread for this ID. |
::dump address |
Dump memory from address. |
::findfalse |
Find potentially falsely shared structures. |
::findleaks |
Search for potential kernel memory leaks. |
::findlocks |
Find locks held by specified thread. |
threadp::findstack |
Find kernel thread stack for associated thread. |
::inode |
Display summary of inode_t . |
::kmsqid |
Display message queue structure (kmsqid ). |
::ksemid |
Display a semaphore structure (ksemid ). |
::kshmid |
Display a shared memory structure (kshmid ). |
::pgrep pattern |
Find proc_t pointers matching the pattern. |
0tPID::pid2proc |
Convert decimal PID to a proc_t pointer. |
procp::ps |
Process information matching the associated proc_t . |
::status |
Print summary of target status. |
sobj::walk blocked |
Walk threads blocked on a particular synchronization object (sobj). |
procp::walk thread |
Walk threads of associated process. |
sobj::wchaninfo -v |
Blocked on condition variables for a particular synchronization object (sobj). |
address::whatis |
Attempts to identify address contents. |
vnode::whereopen |
Processes with vnode open. |
Tracing, Watchpoints and Breakpoints |
(Breakpoints for kernel debugger only.) |
$b |
Show all breakpoints. |
$i |
Print list of ignored signals. |
:a |
Set a watchpoint. |
:b |
Set a breakpoint. |
:c or ::cont |
Continue target execution. |
:d |
Delete a breakpoint. |
:e |
Step over next instruction. |
:i |
Step over next instruction. |
:k |
Kill and release targets. |
:p |
Set execute access watchpoints. |
:r |
Run new target process. |
:s |
Step target to next instruction. |
:t |
Stop on delivery of specified signals. |
:u |
Step out of current function. |
:w |
Set write access watchpoint. |
:z |
Delete all breakpoints. |
General Debugging |
$G |
Toggle C++ demangling. |
$V |
Toggle disassembly mode. |
$g |
Toggle C++ demangling. |
address::dis |
Disassemble text starting at address. |
Comparison Operators |
== |
Logical equality. |
!= |
Logical inequality. |
& |
Bitwise AND. |
| |
Bitwise OR. |
^ |
Bitwise XOR. |