我遇到了这个用于跟踪用户堆栈大小的简单 DTrace 脚本,但它在 OS X Mountain Lion 上不起作用:
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
确实,我很难弄清楚 OS X 上“curthread”的有效成员是什么。是否有等效的方法可以深入了解线程的当前用户堆栈大小?或者“curthread”只是 OS X 上的一个不透明指针,仅可用于线程识别?请注意,如果有帮助的话,我很乐意通过“pid”提供程序进行此跟踪。
谢谢!