我遇到过这个简单的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”的有效成员是什么。是否有相同的方法可以深入到该线程的当前用户堆栈大小?或者“在线操作”只是OS X上的一个不透明指针,只能用于线程识别?请注意,我很高兴通过“pid”提供程序进行此跟踪,如果这有助于任何。
谢谢!