2012-10-08 62 views
6

पुनरारंभ करना मैं पाइथन और पीडीबी के लिए अपेक्षाकृत नया हूं, लेकिन मुझे gdb के साथ बहुत अनुभव है।PDB.run - एक पीडीबी सत्र

मेरी समस्या यह है कि अगर मैं किसी बिंदु पर अपने कोड में कई ब्रेकपॉइंट्स सेट करता हूं तो मैं कुछ बदलना चाहता हूं और इन ब्रेक पॉइंट्स को बनाए रखने के अपने डीबग सत्र को फिर से चलाऊंगा। हालांकि निम्नलिखित उत्पादन

(Pdb) run 
    Traceback (most recent call last): 
    File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code 
    exec code in run_globals 
    File "/usr/lib64/python2.6/pdb.py", line 1319, in <module> 
    pdb.main() 
    File "/usr/lib64/python2.6/pdb.py", line 1312, in main 
    pdb.interaction(None, t) 
    File "/usr/lib64/python2.6/pdb.py", line 198, in interaction 
    self.cmdloop() 
    File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop 
    stop = self.onecmd(line) 
    File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd 
    return cmd.Cmd.onecmd(self, line) 
    File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd 
    return func(arg) 
    File "/usr/lib64/python2.6/pdb.py", line 661, in do_run 
    raise Restart 
pdb.Restart 
]$ 

मैं दो स्वतंत्र Linux प्लेटफार्मों पर इस की कोशिश की और एक ही परिणाम मिला है साथ समाप्त करने के लिए मेरी सत्र मेरी pdb सत्र मामलों में "रन" में प्रवेश लेकिन मैं दस्तावेज में कोई सुधार नहीं मिल रहा।

उत्तर

8

तो अगर कोई समस्या परवाह करता है तो यह था कि पीडीबी में "रन" जीडीबी में "रन" जैसा सटीक नहीं है। जीडीबी में अगर मैं दौड़ता हूं तो प्रोग्राम पुनरारंभ होता है और पहला ब्रेक पॉइंट जारी रहता है। पीडीबी में प्रोग्राम पुनरारंभ होता है और फ़ाइल की शुरुआत में जाता है। मुझे पहले ब्रेक पॉइंट पर जाने के लिए 'n' के बाद 'c' दबाया जाना चाहिए। यदि, प्रोग्राम को चलाने के लिए प्रयास करने का प्रयास करते हुए, मैं उपरोक्त दिखाए गए फ़ाइल की शुरुआत में दूसरी बार चलाता हूं, जैसे डीबगर क्रैश होता है।

+0

हां, कोई परवाह करता है। धन्यवाद! – Oddthinking

+2

यह अभी भी एक बग है pdb – erjoalgo

+0

आप फिर से शुरू करने के बाद 'सी' कर सकते हैं, है ना? –

1

एक असामान्य स्थिति का सामना करने पर (यानी, अपने प्रोग्राम में बग), pdb बल्कि काम आते हुए कहते हैं:

Uncaught exception. Entering post mortem debugging 
Running 'cont' or 'step' will restart the program 

यहाँ, "रन" या "पुनः आरंभ" टाइप pdb प्रक्रिया unceremoniously के रूप में समाप्त करने के लिए कारण होगा ओपी राज्यों (लेकिन "cont" या "कदम" वादा के रूप में पुनरारंभ होगा)।

संभावित रूप से कई अधीर पायथनिस्ट्स "पोस्ट मॉर्टम डीबगिंग" दर्ज किए गए हैं या नहीं, लेकिन मुझे यकीन है कि मौजूदा पुनरारंभ सेमेन्टिक्स क्लीनर कार्यान्वयन का उपज है या नहीं।