, ben perf record -g -p $pid
kullanılan, ancak sonuç sadece tüm yaklaşık PyEval_EvalFrameEx
oldu. Gerçek adı "test" e nasıl ulaşabilirim, yoksa perfomansı kullanarak yapamaz mıyım?Python çağrı yığınını linux perf ile alabilir miyim?</p> <pre><code>def test(): print "test" </code></pre> <p>Örneğin
20
A
cevap
1
Belki traceback modülü sizin için hile olacaktır:
https://docs.python.org/2/library/traceback.html https://docs.python.org/3/library/traceback.html
2
Sen perf ile bunu yapmak mümkün olmayacaktır, özellikle Linux süreç modelini arayüz şekilde üretilmiş olduğunu, bu deşifre Yığın çerçeveleri, vb. PyEval_EvalFrameEx işlevini çalıştırdığınızı söyleyerek söylediği şeyi yapıyor. Python'un çerçeve bilgisini gerçekten deşifre edebilmek için python'a özgü bilgilerle genişletilmesi gerekecek. Ne yazık ki, Python ve C/C++ modüllerini kolayca ayıklamak için gerçekten iyi bir yol bulamadım. Genellikle diğeri için pdb ve diğeri için gdb.
Neden özellikle "perf" kullanımını gerektirir? – NPE
Benim python program bazı C++ uzantıları arayacak, ben C++ uzantıları için çağrı yığını kontrol etmek için perf kullanın, ayrıca python almak istiyorum. – wuwl