我遇到這個簡單的DTrace腳本用於跟蹤用戶堆棧大小,但它並沒有在OS X山獅的工作:DTrace:跟蹤OS X上的用戶堆棧大小? (curthread-> t_procp-> p_stksize?)
dtrace -n 'sched:::on-cpu { @[execname] = max(curthread->t_procp->p_stksize);}'
(來源:http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_One_Liners )
在OS X上返回的錯誤是:
dtrace: invalid probe specifier sched:::on-cpu { @[execname] =
max(curthread->t_procp->p_stksize);}: in action list:
t_procp is not a member of struct thread
事實上,我有一個困難時期試圖找出什麼「curthread相關」的有效成員是在OS X上是否有一個相當於深入到當前用戶堆棧大小的方式爲線程?或者「curthread」只是OS X上的一個不透明的指針,只能用於線程標識?請注意,如果這有助於任何操作,我會很樂意通過「pid」提供程序執行此跟蹤。
謝謝!
的OSX的'結構thread'可以在這裏找到:HTTP:// WWW .opensource.apple.com/source/xnu/xnu-2050.9.2/osfmk/kern/thread.h – trojanfoe 2013-02-14 16:36:09
謝謝,這當然很有趣,但我仍然不知道如何從那裏獲得用戶堆棧大小,因爲OS X結構與特性t_procp-> p_stksize之上的(推測的)Solaris結構不同。 – 2013-02-14 23:05:37
從搜索各種來源看來,似乎沒有OSX等價物。從命令行嘗試'apropos dtrace'查看隨Mac提供的腳本;他們都沒有提供你正在尋找的東西,所以你可能必須自己寫這個。 – trojanfoe 2013-02-15 07:28:48