我遇到这个简单的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