wuw*_*uwl 27 python linux perf
例如,
def test():
print "test"
Run Code Online (Sandbox Code Playgroud)
我用过perf record -g -p $pid
,但结果只是一切PyEval_EvalFrameEx
.如何才能获得真实姓名"test"或者如果不能使用perf?
截至 2018 年,perf
根本不支持读取 Python 堆栈帧(参见2014 年 Python 邮件列表讨论)。
Python 3.6 对Dtrace 和 Systemtap有一些支持。
另一个替代方案是Pyflame,这是一个用于 Python 的随机分析器,它通过ptrace()
. 与 Dtrace/Systemtap 相比,您不需要额外的权限,它也适用于在没有工具化支持的情况下编译的 Python 版本。
当您在--threads
Pyflame 中使用该选项时,您会看到调用 C/C++ 扩展的 Python 行,尽管堆栈跟踪在最后一个 Python 帧处停止。但也许这对于您的用例来说已经足够了。
编辑: Pyflame在 2019 年底左右被放弃。一个黑客新闻跟帖提到了以下方案:
归档时间: |
|
查看次数: |
2164 次 |
最近记录: |