在Linux中,我可以使用echo t > /proc/sysrq-trigger来转储系统中所有线程的内核调用堆栈。
在Mac中有没有实现同样目的的方法?或者有什么方法可以转储一个进程的内核堆栈?
发布于 2019-08-30 04:57:48
简而言之: procexp 0线程(作为根用户)将完成此任务,其中procexp是来自http://newosxbook.com/tools/procexp.html的"Process Explorer“。
稍长一点的答案:- Dtrace是过度杀伤力,需要禁用SIP - stackshot是不推荐的,因为它的底层syscall (#365)已被删除-一个替代,stack_snapshot_with_config(#491)也可以通过编程使用(这是驱动上述工具的原因)
发布于 2016-03-22 18:08:07
答案可能是dtrace。我知道Instruments.app (或iprofiler)可以进行基于探测的分析,所以它会定期进行堆栈跟踪。(用户或内核;您的选择)据我所知,这都是基于dtrace的,尽管我对它还不够了解,无法告诉您一种一次性跟踪的方法。
发布于 2016-10-08 16:37:31
嗯..。我有好几年没有在Mac上写代码了。但是一个名为'stackshot‘的工具可以帮助你做到这一点。试着在谷歌上搜索一下它的用法。:-)
https://stackoverflow.com/questions/36125739
复制相似问题