2013-03-01 5 views
20

इसका क्या अर्थ है?पायथन डीबगर मुझे बताता है कि नम्पी सरणी का मान "*** नवीनतम फ्रेम"

मेरा फ़ंक्शन एक पायथन/सी लाइब्रेरी से दो numpy arrays प्राप्त करता है। उस फ़ंक्शन कॉल के बाद मैं एक बग खोजने के लिए डीबगर चालू करता हूं, इसलिए मैं दो numpy arrays को देखने के लिए लाइन जोड़ता हूं।

import pdb; pdb.set_trace() 

लेकिन arrayspdb में से एक के मूल्यों के लिए ही संदेश देता है *** Newest frame

PDB उत्पादन:

(Pdb) type(d) 
<type 'numpy.ndarray'> 
(Pdb) type(f) 
<type 'numpy.ndarray'> 
(Pdb) f.shape 
(3, 3, 17856) 
(Pdb) d[0].shape 
*** Newest frame 
(Pdb) d[0] 
*** Newest frame 

उत्तर

29

आदेश dcommand for the debugger एक करने के लिए ढेर नीचे जाने के लिए प्रयोग किया जाता है 'नया फ्रेम'। ऐसा लगता है कि पार्सिंग इस असंगतता को संभाल नहीं सकती है।

परिवर्तनीय d का नाम बदलने का प्रयास करें।

+4

या 'पी डी [0] .shape' या' प्रिंट डी [0] .shape' –

+3

या अगर आप डीबगर में पायथन कोड का उपयोग करना चाहते हैं तो विस्मयादिबोधक चिह्न का उपयोग करें: '! D [0]'। आम तौर पर, डीबगर cmdline पर आपके द्वारा दर्ज की गई किसी भी चीज़ को * डीबगर * कमांड पर विचार किया जाता है, पायथन नहीं (लेकिन डीबगर काफी लचीला है)। [दस्तावेज़ीकरण] के अंत के पास देखें (http://docs.python.org/2/library/pdb.html)। – Evert

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