dtrace, truss, pstack
对于同一个程序(运行30+ s),分别truss 和 dtrace:fbt, pstack 得到的结果却别很大。truss 后来主要是:
25.02170.0002 times(0xFFFFFFFF7FFFA350) = 195799004
27.02352.0018 times(0xFFFFFFFF7FFFA350) = 195799204
27.02380.0003 times(0xFFFFFFFF7FFFA350) = 195799204
29.01091.9871 times(0xFFFFFFFF7FFFA350) = 195799403
除了这个system call 之外,没有其他的显示。
dtrace:ftb
显示了大量的函数调用
pstack
也是了从_start 到 当前所调用的函数。但可读性极差。
例如:
0000000100aec5f4 ksusgstaf (67bf406d8, 0, 38000b2f0, 2, 38000b868, 240e8) + 194
0000000106ad0b7c qerfxFetch (10b95d, ffffffff79301398, 103059700, ffffffff79301720, 7fff, 5b7a8e410) + 1dc
0000000106b44764 qergsFetch (5b7a8e068, ffffffff793017c8, 1044b1600, 103059700, ffffffff7fffaca0, ffffffff793017c8) + fc4
0000000103c552e0 opifch2 (10cfc9, 1, ffffffff79301130, 10cfb4970, ffffffff7a43cd08, ffffffff7a422678) + 2620
000000010446738c kpoal8 (10b654300, ffffffff7fffe0f8, 10cfcb3b0, 0, ffffffff7a422678, 1) + dcc
0000000103c7934c opiodr (10b400, 10cc00, 10cfb4970, 5e, 0, 3e00) + 48c
0000000107bba054 ttcpip (103c78ec0, 34, 10cfb47c0, ffffffff7fffe0f8, ffffffff7fffcb40, 10b3db7c8) + 394
0000000103c4d508 opitsk (10b3dfc94, 10b3df9a4, 1, 10cfcb334, 0, a) + 668
0000000103c5e21c opiino (10cfcb3b0, ffffffff7ffff4b0, 1, 0, ff, 10d233af8) + 39c
0000000103c7934c opiodr (10cfc9000, 3d70, 10cfb4970, 3c, 0, 3e00) + 48c
0000000103c419e8 opidrv (10cfb8000, 0, 10cfcb3b0, 3c, 0, ffffffff7ffff4b0) + 408
0000000104dfaed8 sou2o (ffffffff7ffff488, 3c, 4, ffffffff7ffff4b0, 10cfcf7b8, 10cc00) + 58
000000010060ee78 opimai_real (2, ffffffff7ffff738, ffffffff7df3afb8, 10c400, 0, 1) + 1f8
0000000104e1411c ssthrdmain (10cc00, 10cfda, 10cfda000, 2, 10cfda, 10d161e20) + 13c
000000010060ec5c main (2, 0, 0, ffffffff7ffff748, ffffffff7ffff858, ffffffff7b700200) + 13c
000000010060eafc _start (0, 0, 0, 0, 0, 0) + 17c
这些ksusgstaf, qergsFetch 都是什么东西?
system call 和 系统内核函数 还有这些不知什么的东西 都是什么关系? dtrace 和truss都跟踪当前时间点开始的调用
pstack是查看进程的堆栈,是进程开始运行到当前时间点的信息
页:
[1]