2014-11-13 16 views
20

उदाहरण के लिए,क्या मुझे लिनक्स परफ के साथ पाइथन कॉल स्टैक मिल सकता है?

def test(): 
     print "test" 

मैं perf record -g -p $pid इस्तेमाल किया, लेकिन परिणाम अभी सब PyEval_EvalFrameEx बारे में था। मैं वास्तविक नाम "परीक्षण" कैसे प्राप्त कर सकता हूं या अगर perf का उपयोग कर नहीं कर सकता?

+0

आपको विशेष रूप से 'perf' के उपयोग की आवश्यकता क्यों है? – NPE

+1

मेरा पायथन प्रोग्राम कुछ सी ++ एक्सटेंशन कॉल करेगा, इसलिए मैं सी ++ एक्सटेंशन के लिए कॉल स्टैक की जांच करने के लिए पेर्फ का उपयोग करता हूं, मैं भी पाइथन प्राप्त करना चाहता हूं। – wuwl

उत्तर

2

आप पर्फ़ के साथ ऐसा करने में सक्षम नहीं होगा, जो विशेष रूप से लिनक्स प्रक्रिया मॉडल इंटरफेस लिए बनाया गया है, उन को डिकोड ढेर फ्रेम, इत्यादि। यह कर रहा है कि यह आपको यह बताकर क्या करना चाहिए कि यह कार्य PyEval_EvalFrameEx को निष्पादित कर रहा था। इसे पाइथन-विशिष्ट जानकारी के साथ विस्तारित किया जाना चाहिए ताकि वास्तव में पाइथन की फ्रेम जानकारी को डीकोड कर सकें, जो होने वाला नहीं है। दुर्भाग्यवश मुझे पाइथन और सी/सी ++ मॉड्यूल दोनों को आसानी से डीबग करने का वास्तव में अच्छा तरीका नहीं मिला है। यह आमतौर पर एक के लिए पीडीबी और दूसरे के लिए जीडीबी है।

संबंधित मुद्दे