Alb*_*ert 25 python macos instruments xcode-instruments
MacOSX Xcode Instruments非常适合分析本机代码.但是,我的callstacks中还有很多Python调用.我可以以某种方式使仪器具有Python感知能力吗?
我能想到的一个解决方案是,当它看到一些PyEval_EvalFrameEx
框架时,它在其局部变量/参数中查找以分隔不同的Python调用并向我显示一些调用信息.
我不是在问一个Python分析器.我想描述我的本机代码.但是在这个本机代码分析中,我想添加一些进一步的智能来分析和翻译Python堆栈帧.
没有 MacOSX 工具可以分析 Python 代码。就我个人而言,我使用 cProfile。它是一个名为 的内部分析器cProfile
。您可以通过以下任一方式使用它:
import cProfile
cProfile.run('print "Hello World!"')
Run Code Online (Sandbox Code Playgroud)
或者
python -m cProfile your_own_script.py
Run Code Online (Sandbox Code Playgroud)
结果会是这样的:
>>> cProfile.run('print "Hello World!"')
Hello World!
2 function calls in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Run Code Online (Sandbox Code Playgroud)
编辑:如果您正在寻找本机级别的调用。然后您应该转向strace
(对于 Linux)和dtruss
(对于 Mac OSX)或类似的其他工具。基本上,您可以将 Python 脚本包装在调用中strace
,并且您将能够查看所有“本机”C/C++ 调用。对于其他linux系统使用:
strace -fetrace=open python your_script.py
Run Code Online (Sandbox Code Playgroud)
或者如果您使用的是 Mac OSX:
dtruss -f -t open python your_script.py
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
归档时间: |
|
查看次数: |
2846 次 |
最近记录: |