We should forget about small efficiencies — Donald Knuth
16 Jun
libuutil and designing for debuggability, from Stephen Hahn’s blog, advices from zmx.
大意是說 Stephen 他們在 Solaris 10 上, 預期會有 multithreaded, present large, complicated images for postmortem debugging 的 daemons, 所以寫下三個 requirements:
但是目前 Solaris 沒有這樣的 data structure, 所以他們開始設計 libuutil (userland utility functions). 讓 modular debugger — mdb (The typical debugger for kernel work in Solaris), 能夠用到這些 debug information.
例如, 任何 link 到 libuutil 的程式, 可以用 mdb 來 attach:
# mdb -p `pgrep -z global startd`
Loading modules: [ svc.startd ld.so.1 libumem.so.1 libnvpair.so.1 libsysevent.so.1 libuutil.so.1 libc.so.1 ]
> ::uu_list_pool
ADDR NAME COMPARE FLAGS
080dcf08 wait_info 00000000 D
080dce08 SUNW,libscf_datael 00000000 D
080dcd08 SUNW,libscf_iter 00000000 D
080dcc08 SUNW,libscf_transaction_entity c2b0476c D
080dc808 dict 0805749c D
080dc908 timeouts 0806ffab D
080dca08 restarter_protocol_events 00000000 D
080dcb08 restarter_instances 0806ccd7 D
080dc708 restarter_instance_queue 00000000 D
080dc608 contract_list 00000000 D
080dc508 graph_protocol_events 00000000 D
080dc408 graph_edges 00000000 D
080dc308 graph_vertices 08059844 D
>
我是不是要試試看在 Solaris 下開發程式了呢? :p
Popularity: 13% [?]
Leave a reply